У меня есть глупый вопрос. Почему это дает 488.15999999999997 вместо 488.16Конфликтующее десятичное значение с двойным типом данных в java
double dbl = 427.14 + 61.02;
System.out.println(dbl);
Я слышал, что мы должны использовать BigDecimal, если мы рассматриваем эту большую точность (например, связанные логики валюты). Но я хочу знать, что стоит за этим.
[Что каждый ученый должен знать о плавающей запятой, арифметика] (http://docs.oracle.com/cd/E19957-01/806-3568 /ncg_goldberg.html) –
Попробуйте [Калькулятор IEEE 754] (http://www.binaryconvert.com/convert_double.html): вставьте свое значение для десятичной дроби и посмотрите, что произойдет. Это стоит тысячи слов! – dasblinkenlight
Спасибо всем за ваши комментарии. Я отметил, что эта тема доступна во многих местах. Но я хотел узнать точную причину этого. ОК за минус голоса. Я заслужил это. Но ваши рекомендации очень полезны для меня. Я получил много знаний о значениях с плавающей запятой в java – namalfernandolk