在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
也许我错过了什么,但可能的解释是什么?
答案 0 :(得分:2)
原因是尽管允许的数字范围非常大,但JS数字(IEEE 754双精度)的精度不足以准确表示该范围内的每个可能数字。这样做需要308位数!
因此MAX_VALUE - 1
与MAX_NUMBER
无法区分。