|
|
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
BigDecimal x = new BigDecimal("45.457"); System.out.println(x.toBigInteger()); -- вывидет 46 а как бы мне произвести округление не до целого, а до порядка сотен, т.е. что мне надо сделать, чтобы получить 45.46? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 09:40:05 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
vladik_kBigDecimal x = new BigDecimal("45.457"); System.out.println(x.toBigInteger()); -- вывидет 46 а как бы мне произвести округление не до целого, а до порядка сотен, т.е. что мне надо сделать, чтобы получить 45.46? round(45.457*100)/100.00 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 10:46:14 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. Округлит до 45.46 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 10:49:13 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Vladimir Kozlov vladik_kBigDecimal x = new BigDecimal("45.457"); System.out.println(x.toBigInteger()); -- вывидет 46 а как бы мне произвести округление не до целого, а до порядка сотен, т.е. что мне надо сделать, чтобы получить 45.46? round(45.457*100)/100.00 А вот этого стоит опасаться! Почитайте тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 10:50:41 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Ruslan.Isbarov Vladimir Kozlov round(45.457*100)/100.00 А вот этого стоит опасаться! Почитайте тут Почитал. Согласен с тем что в финансовых расчетах это опасно. Но, если уж у человека возникла необходимость в округлении, значит исходные данные скорее всего уже не годятся для финансовых расчетов, возможно это могут быть какие-то физические либо математические расчеты. Если уж округлить третий знак, то по сравнению с этим то что делается в 10-12 знаке double - очень маленькая погрешность :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 11:25:34 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
а как округлить число, например: 4.5635 не до 4.564, а до 4.563? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 15:28:22 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. where [roundingMode] is: BigDecimal.ROUND_UP Rounding mode to round away from zero. Always increments the digit prior to a nonzero discarded fraction. Note that this rounding mode never decreases the magnitude of the calculated value. BigDecimal.ROUND_DOWN Rounding mode to round towards zero. Never increments the digit prior to a discarded fraction (i.e., truncates). Note that this rounding mode never increases the magnitude of the calculated value. BigDecimal.ROUND_CEILING Rounding mode to round towards positive infinity. If the BigDecimal is positive, behaves as for ROUND_UP; if negative, behaves as for ROUND_DOWN. Note that this rounding mode never decreases the calculated value. BigDecimal.ROUND_FLOOR Rounding mode to round towards negative infinity. If the BigDecimal is positive, behave as for ROUND_DOWN; if negative, behave as for ROUND_UP. Note that this rounding mode never increases the calculated value. BigDecimal.ROUND_HALF_UP Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up. Behaves as for ROUND_UP if the discarded fraction is >= 0.5; otherwise, behaves as for ROUND_DOWN. Note that this is the rounding mode that most of us were taught in grade school. ROUND_HALF_DOWN Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. Behaves as for ROUND_UP if the discarded fraction is > 0.5; otherwise, behaves as for ROUND_DOWN. BigDecimal.ROUND_HALF_EVEN Rounding mode to round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor. Behaves as for ROUND_HALF_UP if the digit to the left of the discarded fraction is odd; behaves as for ROUND_HALF_DOWN if it's even. Note that this is the rounding mode that minimizes cumulative error when applied repeatedly over a sequence of calculations. BigDecimal.ROUND_UNNECESSARY Rounding mode to assert that the requested operation has an exact result, hence no rounding is necessary. If this rounding mode is specified on an operation that yields an inexact result, an ArithmeticException is thrown. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 00:45:51 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
есть непонятка! :) пишу: BigDecimal bd = new BigDecimal("45.455"); bd = bd.setScale(2, BigDecimal.ROUND_HALF_DOWN); System.out.println("bd = "+bd.doubleValue()); System.out.println("-----------------------------------------------------"); BigDecimal bc = new BigDecimal("45.455000001"); bc = bc.setScale(2, BigDecimal.ROUND_HALF_DOWN); System.out.println("bc = "+bc.doubleValue()); выводит: bd = 45.45 ---------------------- bc = 45.46 ПОЧЕМУ ТАК? В одном случае округлило так, как надо, а в другом - нет???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2006, 12:26:29 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Да и в другом случае округлило правильно - перечитайте описание: BigDecimal.ROUND_HALF_DOWN Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. Behaves as for ROUND_UP if the discarded fraction is > 0.5 ; otherwise, behaves as for ROUND_DOWN. BigDecimal.ROUND_UP Rounding mode to round away from zero. Always increments the digit prior to a nonzero discarded fraction. Note that this rounding mode never decreases the magnitude of the calculated value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2006, 17:55:54 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
А если нужно не для вычислений, а для простого вывода строки, то String aaa = new java.text.DecimalFormat("0.00").format(YourNumber); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2006, 20:25:21 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Подскажите как преобразовать число к нормальному виду: String buff = Double.toString(rs.getDouble(colName)); в результате число вида 2342423543 получаеться вида: 2.342423543E9 число вида 980 в виде 980.0 Как сделать чтобы число в buff ложилось в нормальном виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 15:08:16 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Али-бабаПодскажите как преобразовать число к нормальному виду: String buff = Double.toString(rs.getDouble(colName)); в результате число вида 2342423543 получаеться вида: 2.342423543E9 число вида 980 в виде 980.0 Как сделать чтобы число в buff ложилось в нормальном виде. javax.swing.text.NumberFormatter? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 15:49:16 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Вот мне предложили такой вариант: nf = new DecimalFormat("0.####"); String buff = new String(nf.format(number)); но все равно получаеться не универсально - не всегда известно сколько знаков после запятой. Да и результат получаеться с запятой вместо точки - видно зависит от настроек компьютера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2006, 18:22:24 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Вот к размышлению : Нуна округлять всегда вниз до 2 знаков после запятой. Входной и выходной параметр double. Используем BigDecimal.ROUND_DOWN. Почти всегда работает правильно ;) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Погрешности погрешности погрешности.... Попробуйте раскоментировать строчку в методе ;) З.Ы. мона канешно не использовать BigDecimal :) но использовали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2008, 19:29:10 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
BigDecimal d = new BigDecimal(1.555); System.out.println(d.setScale(2, RoundingMode.HALF_UP)); получаем 1.55 почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 15:20:20 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
наверное из-за того, что: Код: plaintext 1. 2. 3. результат: 1.55 49 999999999999378275106209912337362766265869140625 1.55 Код: plaintext 1. 2. 3. 1.55 50 0000000010007994433181011117994785308837890625 1.56 См. binary float point - http://www.h-schmidt.net/FloatApplet/IEEE754.html авторNot every decimal number can be expressed exactly as a floating point number ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 15:54:04 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
со стандартом IEEE754 знаком ;) значение 1.55 49 99999999999937... видел. но в процессе установки scale = 2 должно выполнятся округления вверх (в соответствии с режимом округления RoundingMode.HALF_UP). каким образом тогда выполняется округление, если на выходе мы получаем 1.55? получается, если исходное значение не может быть точно представлено в виде числа с плавающей запятой, то и округление такого неточного значения приводит к неточному результату? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 17:06:51 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. конструктор BigDecimal(String val): This is generally the preferred way to convert a float or double into a BigDecimal, as it doesn't suffer from the unpredictability of the BigDecimal(double) constructor. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2010, 11:54:45 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
а без BigDecimal, обычный double, как-нибудь округлить можно до 2 знаков ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 15:22:05 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
grokа без BigDecimal, обычный double, как-нибудь округлить можно до 2 знаков ? А смысл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 15:35:14 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Смысл есть в инженерных расчетах, когда надо оценить возможное значение, когда не важно 1, 99 или 2.01 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 15:46:25 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
Blazkowiczgrokа без BigDecimal, обычный double, как-нибудь округлить можно до 2 знаков ? А смысл? слово Big пугает особенно когда надо округлить миллион чисел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 16:30:49 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
забыл никСмысл есть в инженерных расчетах, когда надо оценить возможное значение, когда не важно 1, 99 или 2.01 Как-как? Т.е. мы округлим double до 2х знаков после запятой. Получим десятичную погрешность примерно соизмеримую со значением, на которое мы округлили, и это будет важно в каких-то там расчетах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 16:31:10 |
|
||
|
Округление в JAVA
|
|||
|---|---|---|---|
|
#18+
авторКак-как? Т.е. мы округлим double до 2х знаков после запятой. Получим десятичную погрешность примерно соизмеримую со значением, на которое мы округлили, и это будет важно в каких-то там расчетах? Ну например тебе надо заскэйлить картинку, не пихать же туда BigDecimal ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 16:33:13 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37593695&tid=2128255]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
267ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 585ms |

| 0 / 0 |
