请参见代码片段:
运行代码片段后,第一次写入会产生以下结果:
第三个写入操作产生了以下输出:
但是,我只将字符串形式的数字解析为数字。为什么它会给出一个更大的数字?
我认为这可能与存储容量限制有关,但如果它不能存储较小的数字,为什么会产生更大的数字?
我阅读了这个问题:为什么将一个非常大的数字解析为整数会返回1和
所以,为什么解析字符串形式的大数字会返回一个更大的数字?
var num = "9223372036854775808";
document.write(num);
document.write("<br>");
document.write(parseInt(num, 10));
9223372036854775808
第三个写入操作产生了以下输出:
9223372036854776000
但是,我只将字符串形式的数字解析为数字。为什么它会给出一个更大的数字?
我认为这可能与存储容量限制有关,但如果它不能存储较小的数字,为什么会产生更大的数字?
我阅读了这个问题:为什么将一个非常大的数字解析为整数会返回1和
parseInt
文档,但它们并没有帮助太多。所以,为什么解析字符串形式的大数字会返回一个更大的数字?
parseFloat(num)
会给出完全相同的结果。还请注意,结果具有16个有效数字,这符合JS浮点数值的预期。 - AmadanparseInt(9223372036854775108)
的结果为9223372036854775000
。 - Sachin Jain