在JavaScript中,为什么(Number.MAX_VALUE - 1)< Number.MAX_VALUE总是评估为false?

时间:2014-02-06 10:47:00

标签: javascript math numbers constants

JavaScript中,Number.MAX_VALUE表示最大可表示的数值(大约为1.79E+308,这是一个非常大的数字)

但是,如果我在javascript控制台中评估(Number.MAX_VALUE - 1) < Number.MAX_VALUE,则会返回false

如果我使用乘法,它的工作原理是:

(Number.MAX_VALUE * 0.99999) < Number.MAX_VALUE返回true

也许我错过了什么,但可能的解释是什么?

1 个答案:

答案 0 :(得分:2)

原因是尽管允许的数字范围非常大,但JS数字(IEEE 754双精度)的精度不足以准确表示该范围内的每个可能数字。这样做需要308位数!

因此MAX_VALUE - 1MAX_NUMBER无法区分。