为什么++ a增加两次?

时间:2018-10-11 22:01:28

标签: javascript

今天在Javascript面试中,一个朋友被问到这个问题:

为什么++ a会增加两次?

a = b = 9**17-2
++a
console.log(a-b) //Why is it 2 ?

1 个答案:

答案 0 :(得分:5)

这是因为该值大于Number.MAX_SAFE_INTEGER,并且不能用IEEE754双精度数字精确表示(JS用作数字表示格式)

16677181699666566在IEEE754双精度中是1101100111111110011101111001100010000001100101000011

并且166771816996665681101100111111110011101111001100010000001100101000100

您会看到二进制文件仍然相差一个,但它的精度不足以使其以人类可读的格式正确显示。