老师 ,这里我用 JS 代码实验了一下,JS 中的数值类型都是 IEEE754实现的浮点数类型:
let a = 20000000;
let b = 1;
let c = a + b;
console.log("c is " + c);
let d = c - a;
console.log("d is " + d);
输出是:
// "c is 20000001"
// "d is 1"
然后2千万个数相加:
let result = 0;
for (let j = 0; j < 20000000; j++) {
result ++;
};
console.log('result', result)
// result 20000000
这里都是正确的,是 自己实现了 Kahan Summation 算法吗 ? 还是其他的原因?
展开
作者回复: 因为js里面你用的是64位的float啦,所以精度不再是1600万分之1了,你可以自己看看64位的精度应该是多少,试试看是不是有一样的问题。