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/

相关文章:

floating-point - 将 float 转换为包含所有数字的字符串

Swift Float80 数据类型在 Xcode 8 beta 中不可用

java - 为什么使用整数而不是 double ?

java - AppCompat 不支持当前主题功能

floating-point - 为什么不使用 Double 或 Float 来表示货币?

.net - 如何在正确的语言环境中将 float 插入 SQL 表

c - 如何在 C 中打印 long double?

java - 如何从应用程序 (Android) 中禁用/启用移动数据

java - 在 Java 中,如何定义返回多个答案中最佳答案的 Future<V>?

java - 如何将某个值与数组中的值进行比较?