我正在尝试执行以下代码
var n = 100;
var sum =0;
while(n>0)
{
sum = sum + n%10;
n = n/10;
}
console.log(sum);
结果应为1但javascript正在返回
1.1111111111111112
另外,当我运行个别陈述时,它给出了非常好的结果, 可能的原因是什么?
答案 0 :(得分:7)
它给出的结果是正确的 -
让我们进入while循环
对于第一次迭代,n = 100,因此n%10 = 0且sum = 0,在第一次循环sum = 0和n = 10之后
在第二次迭代中,n%10 = 0且sum = 0, 在第二次迭代之后sum = 0并且n = 1
对于第三次迭代,n%10 = 1且sum = 0, 在第三次迭代之后sum = 1且n = 0.1
对于第四次迭代,n%10 = 0.1且sum = 1, 在第四次迭代之后sum = 1.1并且n = 0.01
依此类推
最后答案是1.1111111111 .......趋于无限,所以它变成了1.1111111111111112
希望这有帮助
修改强>
如果您希望最终答案为1,则初始化n为0.9(n = 0.9)
答案 1 :(得分:2)
不,结果不会是1.请注意,你的循环在每次迭代时将n
除以10,并且连续条件为n > 0
,这将需要多次迭代直到它发生:
所以,结果是正确的:1.1111111 ...最后的2不超过舍入十进制误差(最小值)。