可能重复:
将小数位移动到双精度
为什么下面的数字总和不等于0.4622
?但0.46219999999999994
Double total = new Double(0.08) + new Double(0.0491) + new Double(0.3218) +
new Double(0.0113) + new Double(0.0); // = 0.46219999999999994
我有一个检查用户输入的应用程序。
用户输入 5 个十进制数字和一个总数。应用程序检查所有 5 个数字的总和,以 4 位小数为上限,在 komma 后面是否等于总数。
封顶它给了我0.4621
不等于0.4622
. 我不能使用 DecimalFormat 因为它会四舍五入。如果我明确地说,向下取整,那么在这种情况下它将失败。
关于如何解决这个问题的任何建议?