所有 double 的Java总和不返回预期结果

标签 java sum double floating-accuracy decimalformat

<分区>

Possible Duplicate:
Moving decimal places over in a double

为什么下面的数字总和不等于 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 个小数和一个总数。应用程序检查 komma 后 4 位小数的所有 5 个数字的总和是否等于总数。

封顶它给我 0.4621 这不等于 0.4622。我不能使用 DecimalFormat,因为它会四舍五入。如果我明确地说,向下舍入,那么在这种情况下它将失败。

关于如何解决这个问题有什么建议吗?

最佳答案

尝试使用 java.math.BigDecimal。双轮结果。您只需使用 add 方法,而不是 + 运算符。

关于所有 double 的Java总和不返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217636/

相关文章:

java - 将 getLatitude() 分配给变量时出现问题

java - 使用 eclipse 插件按钮启动 swing 应用程序

c# - Linq To SQL 和 C# 中的总时间间隔

java - SuperCSV,Dozer : Writing to a csv file. 对于具有多行列表的对象

java - while 语句和 if 语句

mysql - 使用 MySQL TIMEDIFF 进行时间计算

javascript - 当三个下拉列表的总和大于 300 时显示 div

c++ - ASM 中的 float

floating-point - 两个不相等的 float 相减是否可以得到0?

java - 较小的有限值 double - Java