Привет Я новичок в программировании на Java, и у меня возникают проблемы с удвоениями. Я пытаюсь вычесть .2 из 4.6, но вместо получения 4.4 я получаю 4.3999999999999995. Я знаю, что Decimals не может быть представлен точно в двоичном формате, но есть ли какой-либо путь вокруг этой проблемы. Любой совет будет принят во внимание.Java double rounding
-1
A
ответ
1
Если вы используете класс BigDecimal
вместо double
, вы не получите эту неточность. Обратите внимание, что при создании BigDecimal
лучше всего передать значение как String
, так что никогда не будет округления.
BigDecimal first = new BigDecimal("4.6");
BigDecimal second = new BigDecimal("0.2");
System.out.println(first.subtract(second));
1
Вы можете использовать BigDecimal
или вы можете использовать форматированный вывод, как
System.out.printf("%.2f%n", 4.6 - 0.2);
выход является
4.40
Или, используя BigDecimal
BigDecimal bd = BigDecimal.valueOf(4.6);
System.out.println(bd.subtract(BigDecimal.valueOf(0.2)));
Выход
4.4
Смежные вопросы
- 1. Java Rounding Double
- 2. Java Rounding (Double)
- 3. rounding double in java
- 4. C# Double Rounding
- 5. set rounding for Double
- 6. Как решить Java Rounding Double issue
- 7. Java rounding double to произвольное число (9)
- 8. Java Rounding Up
- 9. Java Rounding Off Issue
- 10. Java Change Rounding
- 11. Math.pi vs Double and rounding через printf в java
- 12. sql server update double rounding from steps
- 13. Double to Int Rounding, Logic Issue
- 14. Java rounding Issue
- 15. Java Date rounding
- 16. Java Division и rounding
- 17. java rounding numbers
- 18. Ошибка Java Ugly Rounding?
- 19. Java - System.out.printf rounding floats
- 20. rounding .5 down in java
- 21. Javascript rounding v C# rounding
- 22. Need Idempotence on rounding operation
- 23. "double, Double, HashSet" в Java
- 24. C printf float rounding
- 25. BigDecimal Rounding
- 26. Python Rounding
- 27. Rounding Floats
- 28. javascript rounding
- 29. NSDateComponent Rounding
- 30. parseFloat rounding
Научитесь использовать класс 'BigDecimal' вместо' double'. –
Или используйте 'DecimalFormat' для вывода вывода или' printf(). ' – EJP
Для быстрого исправления вместо этого вы можете использовать' float': 'System.out.println (4.6F-0.2F);', но попробуйте познакомиться с «BigDecimal», так как это лучший выбор. – Tom