Note:问题还没有彻底回答!这个问题不涉及浮点部分截断的问题!
在Java中我有这个简单的代码:
double sum = 0.0;
for(int i = 1; i <= n; i++){
sum += 1.0/n
}
System.out.println("Sum should be: 1");
System.out.println("The result is: " + sum);
其中n可以是任意整数。对于像 7,9 这样的数字,sum 的预期值是 sum 的最后一位数字有差异,结果是 0.999999999998 或其他东西,但我使用 3 时的输出是1.0
.
如果将 1/3 加 3 次,您会期望得到一个接近 1 的数字,但我得到的正是 1.0。
Why?
这是因为除法是以整数进行的。
1/n
当 n > 1 时总是给出 0。
因此,最终的结果总是 sum = 0 + 1/1 + 0 + 0...
尝试用1.0 / n
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)