作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!
打开浏览器的控制台,开始输入数值:
输入:(16 位十进制值)
9999999999999998
返回同样结果
输入:
9999999999999999
返回:
10000000000000000
数值不一样,说明精度已经开始丢失。
输入:(16 位十进制值负数)
-9999999999999996
返回同样结果
输入:
-9999999999999997
返回:
-9999999999999996
由此说明,JavaScript 目前表述的整数范围是:
9999999999999998 ~ -9999999999999996
将 9999999999999998
转换为 16 进制为:0x002386f26fc0fffe
将 9999999999999998
转换为 2 进制为:00000000 00100011 10000110 11110010 01101111 11000000 11111111 11111110
因此,假设以 int64 类型来存储值,最多仅有 53 bit 可以用于存储 JavaScript 的合法整形值。