Java double 求和麻烦

标签 java floating-point double

我想知道为什么会出现此错误。 (这是Eclipse调试的Display log)

var
     (double) 2.8
tot.getIva()
     (java.lang.Double) 0.17
var+tot.get()
     (double) 2.9699999999999998

我无法理解为什么我没有得到简单的 2.97!

最佳答案

如果你想要 2.97,你应该使用 BigDecimal .

doublebinary 中存储为分数,而不是十进制。例如,3.75 仅存储为 2^1 + 2^0 + 2^(-1) + 2^(-2)

2.80.17 不能精确表示为二进制小数,因此会出现一些舍入误差。

您还可以找到 this article有帮助。

关于Java double 求和麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786587/

相关文章:

java - 在 Arquillian 测试中使用不同的 persistence.xml 文件

java - Artifact 从 Maven 中心消失?

java - 如何获取倒数第二个输入的数据 - 使用 hibernate 保存在 mysql 数据库中

c++ - c++ 中 long double 中小数点后允许的最大位数

c - C 中的双值错误

c++ - 机器 Epsilon 精度差异

Java并行序列化和压缩

c# - 在使用浮点运算的多人 RTS 游戏中保持同步

c++ - Float、Double、Char、C++ 错误。怎么了?

android - 在JNI中将字节数组转换为浮点 vector 时面临错误