在 java 中添加 1/3 会得到 1.0,但事实并非如此

2024-01-05

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(使用前将#替换为@)

在 java 中添加 1/3 会得到 1.0,但事实并非如此 的相关文章

随机推荐