今天,一位朋友在Javascript求职面试中被问到这个问题:
为什么++a增加了两倍?
a = b = 9**17-2
++a
console.log(a-b) //Why is it 2 ?
发布于 2018-10-11 22:05:59
这是因为这个值比Number.MAX_SAFE_INTEGER
大,不能精确地用IEEE754双精度数字表示( JS使用它的数字表示格式)
16677181699666566
是1101100111111110011101111001100010000001100101000011
在IEEE754中的双重精度
16677181699666568
是1101100111111110011101111001100010000001100101000100
您可以看到二进制文件仍然有一个不同之处,但不足以正确地以人类可读的格式显示二进制文件。
https://stackoverflow.com/questions/52769501
复制相似问题