gpt4 book ai didi

java - 以不同顺序添加相同 double 时的不同结果

转载 作者:太空狗 更新时间:2023-10-29 22:56:18 25 4
gpt4 key购买 nike

为什么相同的数字相加输出不同?

public class Test {

public static void main(String a[]) {

double[] x = new double[]{3.9, 4.3, 3.6, 1.3, 2.6};
System.out.println(">>>>>>> " + sum(x));
}

public static double sum(double[] d) {

double sum = 0;
for (int i = 0; i < d.length; i++) {
sum += d[i];
}
return sum;
}
}

输出是:15.7

如果我交换值

double[] x = new double[] {2.6, 3.9, 4.3, 3.6, 1.3};

我得到的输出为:15.700000000000001

如何获得相同的输出?

最佳答案

float lose precision当你做更多的操作。通常,首先添加最小的数字可获得最高的精度。 (所以结果确实取决于操作顺序)

除了保持相同的操作顺序外,您还必须使用 strictfp在不同的平台上获得相同的结果。

或者更好的是,不要使用 float :使用 BigDecimal相反。

关于java - 以不同顺序添加相同 double 时的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21373865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com