为什么我会得到这个奇怪的答案?
35458.450000000004 而不是 35458.45
使用java6,7 & 8。
public static void main(String[] args) {
double[] as = new double[]{ 1000.0, 1174.0, 1000.0, 2131.0, 240.0,
390.0, 21524.15, 6426.5, 1272.8, 100.0, 200.0};
double v = 0;
for(int i = 0; i < as.length; i++) {
v += as[i];
}
System.out.println(v);
}
在 Scala 中(相同):
scala> val as = List(1000.0, 1174.0, 1000.0, 2131.0, 240.0, 390.0, 21524.15, 6426.5, 1272.8, 100.0, 200.0 );
scala> as.sum
res3: Double = 35458.450000000004
最佳答案
double
和 float
在转换为十进制表示形式时受内部二进制表示形式的影响。
如果您需要任意精度算术,则需要使用 BigDecimal
:
Immutable, arbitrary-precision signed decimal numbers.
关于Java - 为什么我在求和 double 类型时得到这个奇怪的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38497407/