假设我的总和如下,其中n
是任何正整数。
let sum = 0;
for (let i = 0; i < n; ++i) {
sum += (1/n);
}
此总和应始终等于1,但对于JS浮点怪异度,有时则不然。因此,在将Number.EPSILON
与1进行比较时,我一直在使用sum
,如下所示:
function sumIsEqualToOne(sum) {
return Math.abs(1 - sum) < Number.EPSILON;
}
根据MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON)上的示例。
对于n = 7
,1 - sum === Number.EPSILON
而言,这并不总是有效,因此sumIsEqualToOne
返回false
。
我最初的假设是否正确,并且sum
实际上并不总是等于1? (1/7)+(1/7)+(1/7)+(1/7)+(1/7)+(1/7)+(1/7) !== 1
吗?