考虑到浮点不精确性,对于任何a
的任意数值(除法运算a / a
返回一个数值),是否可以保证该方程式成立?
Math.floor(a / a) == 1
答案 0 :(得分:4)
IEEE 754指定运算结果是精确的数学结果,四舍五入到最接近的可表示值(在用户可以指定的方向上,向上,最接近,依此类推)。当精确的数学结果可表示时,它是最接近的值,并且不进行舍入,因此结果是精确的。因此,只要没有发生异常,a/a
就是1。
如果我没记错的话,JavaScript不允许实现使用过高的精度(例如C)。因此a/a
的评估符合预期。那么Math.floor(a/a)
为1,而Math.floor(a/a) == 1
为true。
答案 1 :(得分:1)
让我们尝试一下
test(1);
test(0);
test(1E10000000000000000000)
function test(a) {
console.log(a, Math.floor(a/a));
}
答案:否