|
|
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
забыл никНу например тебе надо заскэйлить картинку, не пихать же туда BigDecimal Ну, и не использовать же при этом округление double? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 16:47:18 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
grokособенно когда надо округлить миллион чисел Если прям действительно узкое место и диапазон значений достаточно узкий, то можно вообще на битовых операциях округлить. Хотя не факт что будет быстрее умножения\деления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 16:54:15 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
авторНу, и не использовать же при этом округление double? В общем случае вы правы, просто был случай когда после рескейла надо было вывести на экран информацию о том, насколько картинка была масштабирована, и вот именно в этом случае мне нужно было округление доубла, но это редко, да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 17:05:05 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
забыл никВ общем случае вы правы, просто был случай когда после рескейла надо было вывести на экран информацию о том, насколько картинка была масштабирована, и вот именно в этом случае мне нужно было округление доубла, но это редко, да - Именно в этом случае потери производительности при использовании BigDecimal ни на что не влияют. У вас одно значение scale для одной картинки. - А главное то что в этом случае вам и округлять не нужно было вообще. При выводе лишнее обрезается через NumberFormat или форматированый вывод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 17:08:25 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
BigDecimal a = new BigDecimal("12345678.132"); System.out.println(a.add(new BigDecimal("1"), new MathContext(2, RoundingMode.HALF_EVEN)).toPlainString()); Ожидаю: 12345679.13 Получаю: 12000000 WTF!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 15:51:59 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
MathContext(2, ... с точностью в 2 цифры precision - the number of digits to be used for an operation; results are rounded to this precision это не "после запятой", это - "вообще" используйте 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 15:58:43 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMathContext(2, ... с точностью в 2 цифры precision - the number of digits to be used for an operation; results are rounded to this precision это не "после запятой", это - "вообще" используйте 0 Понял, спс. А что делать когда возникает ситуация наподобие 1/3, когда в результате получаем 0.3333.....3? В такие моменты вылетает эксепшн "java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 16:22:44 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
z0z0iberg BlazkowiczMathContext(2, ... с точностью в 2 цифры precision - the number of digits to be used for an operation; results are rounded to this precision это не "после запятой", это - "вообще" используйте 0 Понял, спс. А что делать когда возникает ситуация наподобие 1/3, когда в результате получаем 0.3333.....3? В такие моменты вылетает эксепшн "java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result". Догнал сам: System.out.println(new BigDecimal("1").divide(new BigDecimal("3"), 2, RoundingMode.HALF_EVEN).toPlainString()); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 16:25:10 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Вижу за это время вопрос десятичного округления не прояснился: люди то преобразуют double в BigDecimal через строку (без комментариев) то в стиле round(45.457*100)/100.00. Про неточность этого метода уже писалось выше. Далее точный метод десятичного округления: Код: java 1. 2. 3. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Вывод: paramDouble=13.5464999999999999857891452847979962825775146484375 bd=13.5465000000000 bdRounded=13.547 Округление BigDecimal без myMathContext = 13.546 Т.е. нет ошибки конструктора new BigDecimal(double). Есть известная погрешность двоичного представления и правильный способ преобразования double в BigDecimal с использованием MathContext. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 14:00:41 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2128255]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
436ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 719ms |

| 0 / 0 |
