【发布时间】:2015-01-19 02:41:46
【问题描述】:
我正在准备考试,我解决了这个问题
添加 0.1+0.2+...+1.00 ..或.. 1.00+0.99+0.98+...+0.1
在 Java 中以什么顺序添加数字以获得更高的准确性?
【问题讨论】:
-
你的意思是开始
0.01 + 0.02 + ...? -
如果你真的可以选择,那么 sum(i = 0, n, i) == n * (n+1) / 2,就是 100 * 101 / 2 / 100 == 101 / 2 == 50.5
-
实际上,@ElliottFrisch 的结合律(除了交换律之外还需要它)不适用于浮点运算。
-
System.out.println(1.1 + 0.0001 + 0.0003 + 1.2 == 1.1 + 1.2 + 0.0001 + 0.0003);显示为假。 @ElliottFrisch -
更引人注目的是,
1e100 + 1 - 1e100 == 0。
标签: java floating-point floating-accuracy