|
DecimalFormat - непонятные результаты
|
|||
---|---|---|---|
#18+
Пытаюсь использовать класс java.text.DecimalFormat , и накак не могу понять логику вот такой его работы: Код: java 1.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Возможно она существует, эта логика, но я её никак понять не могу. Буду благодарен за ваши объяснения. Java 1.8 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 19:28 |
|
DecimalFormat - непонятные результаты
|
|||
---|---|---|---|
#18+
Прошу простить, оказывается, у меня при передаче параметра через URL пропадал символ #. Кое-какие результаты "исправились", но далеко не все: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 20:28 |
|
DecimalFormat - непонятные результаты
|
|||
---|---|---|---|
#18+
Вот эти пять вопросительных знаков что ты поставил. Ты можешь прокомментировать что там вызвало удивление? Из непоняток у тебя может быть только режим округления. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/RoundingMode.html Всё остальное - вроде-бы понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 21:05 |
|
DecimalFormat - непонятные результаты
|
|||
---|---|---|---|
#18+
В столбике expected я написал, что ожидал получить в соответствии с описанием. А result иной. Хорошо, раскрою подробее. Код: sql 1. 2. 3. 4. 5.
(2,5). Почему в случае (2) выводятся 3 цифры после запятой, а в случае (5) - только одна? Хотя в обоих случаях за дробную часть отвечает один и тот же подпаттерн ".#". Код: sql 1.
8. Почему здесь не выведена дробная часть? Код: sql 1.
9. Почему здесь выведены цифры 123, хотя в паттерне вообще нет ни "#", ни "0", только префикс (или суффикс) "abc"? Ожидалась на выходе только сама строка "abc". Код: sql 1.
10.Почему тут вообще что-то выведено? Пустой паттерн - пустой результат, не? К округлению вопросов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 21:48 |
|
DecimalFormat - непонятные результаты
|
|||
---|---|---|---|
#18+
Я на этот вопрос вряд-ли отвечу. Не копал эту теорию настолько дотошно. Да и кто из джавистов копал? ХЗ. Посмотри в исходники OpenJDK. https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/text/DecimalFormat.java Там всё - прозрачно. После конструктора вызывается метод void applyPattern(String pattern, boolean localized) и он делает все что надо по настройке форматирования. Попробуй скопировать в отдельный класс с другим именем и стань отладчиком. Понаблюдай. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 22:01 |
|
DecimalFormat - непонятные результаты
|
|||
---|---|---|---|
#18+
Сорри, сорри, запутался в своих вызовах. Похоже в большинстве случаев все в порядке. Остаются только случаи Код: sql 1.
9. Почему здесь выведены цифры 123, хотя в паттерне вообще нет ни "#", ни "0", только префикс (или суффикс) "abc"? Ожидалась на выходе только сама строка "abc". Код: sql 1.
10.Почему тут вообще что-то выведено? Пустой паттерн - пустой результат, не? Прошу прощения за введение в заблуждение и отнятое время, если кто проверять стал. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 22:07 |
|
DecimalFormat - непонятные результаты
|
|||
---|---|---|---|
#18+
mayton Попробуй скопировать в отдельный класс с другим именем и стань отладчиком. Понаблюдай. Тогда уж свой класс и оставить, и в нем все, как желаемо, и делать. Я, собственно, и стартовал, чтобы свой форматтер сделать, а DecimalFormat взять как основу, чтобы на него возложить простые случаи. Но он повел себя немного станно, с моей точки зрения. Хотя, как оказалось, большинство странностей объяснилось моей неаккуратностью. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 22:14 |
|
|
start [/forum/topic.php?fid=59&msg=40015744&tid=2120627]: |
0ms |
get settings: |
14ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
38ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
163ms |
get tp. blocked users: |
1ms |
others: | 296ms |
total: | 527ms |
0 / 0 |