|
|
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
Как правильно выполнять данную операцию в Java, DecimalFormat выполняет округление, через BigDecimal: Код: java 1. 2. 3. 4. получаем 1.22, вроде бы то, что хотел, но для 1.2 получаем 1.19. Такой код: Код: java 1. 2. 3. 4. 5. вроде бы выдает желаемый результат, но сам код как то не очень... Как это сделать по правильному? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 14:40:08 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
double хранит ближайшее двоичное значение к тому десятичному которое вы хотели. Вы уверены что дробь 1.2 имеет конечное представление в двоичном виде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 14:52:29 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, своим ответом вы поясняете причину такого поведения, но к сожалению мне все равно остается непонятным, как правильно добиться желаемого поведения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 15:57:42 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
На stackoverflow советуют ( http://stackoverflow.com/questions/1976809/are-there-any-functions-for-truncating-a-double-in-java) использовать BigDecimal.ROUND_HALF_UP, но это тоже не trunc, 1.22999 превращается в 1.23 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 16:04:23 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
Подобные вопросы надо в FAQ добавлять. Не было и сезона что-б кто-то снова не словил грабель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 17:45:13 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
mayton, и какое же решение то...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 19:07:52 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
just_vladimirmayton, и какое же решение то...? Одно из двух. 1) Отказаться от double в пользу BigDecimal. 2) Забить на погрешность присвоения и использовать double, но при форматировании на экране скрывать некоторые разряды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 19:13:23 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
just_vladimir, вы когда пишете double x = 1.2, получаете двоичное представление 1.1(9), которое справедливо округляется до 1.19, выход - округлять вверх до 3 знака потом вниз до 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 19:17:11 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
хотя там где-нибудь всеравно огребете, лучше автор Отказаться от double в пользу BigDecimal ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 19:17:54 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
mayton, Код: java 1. 2. дак мой вопрос в этом и заключается ... как скрыть разряды не округляя. Задача выполнить преобразование double -> String не производя никаких округлений. Я понимаю, что всегда можно извратиться на тему: Код: java 1. 2. 3. 4. 5. 6. 7. Про использование BigDecimal вместо double решение в принципе понятное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 19:33:32 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
just_vladimir, почитай http://docs.oracle.com/javase/tutorial/java/data/numberformat.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 19:35:10 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
mayton, вы так говорите, будто бы я не читал... фишка в том, что DecimalFormat при форматировании тоже выполняет округление, вот выдержка из его javadoc: Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 10:59:41 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
Потому что округление типа логичнее. Зачем транк-то? Можно конквертнуть в строку на разряд больше с обязательными нулями и откинуть 1 символ. Можно к int свести умножив на 100. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 11:04:11 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ну вот такая задача, что в интерфейс надо отдать сформатированное именно trunc'ом :-) Предложенные вами варианты понятны, я просто искал красивую реализацию, но видимо ее нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 11:11:31 |
|
||
|
Java trunc
|
|||
|---|---|---|---|
|
#18+
just_vladimirну вот такая задача, что в интерфейс надо отдать сформатированное именно trunc'ом :-) Предложенные вами варианты понятны, я просто искал красивую реализацию, но видимо ее нет. Перечитал ваш первый вопрос. По-моему у вас все же с постановкой задачи что-то не то. ROUND_DOWN, то что вам нужно. А с 1.2 проблема как раз потому что 1.2 это у вас изначально не 1.2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 11:29:22 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37880837&tid=2131357]: |
0ms |
get settings: |
15ms |
get forum list: |
27ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
45ms |
get topic data: |
20ms |
get forum data: |
5ms |
get page messages: |
89ms |
get tp. blocked users: |
3ms |
| others: | 325ms |
| total: | 543ms |

| 0 / 0 |
