在使用JS时,我注意到了这个问题。
为什么parseInt(1e+21)
返回1
,而parseInt(1e+20)
返回100000000000000000000
?parseInt(10e+20)
也返回1
?
为什么parseInt(1.7976931348623157E+10308);
返回NaN
,而parseFloat(1.7976931348623157E+10308)
返回Infinity
?
甚至我还制作了一个斐波那契数列,任何带有+21
指数的值都只返回第一个数字:
parseFloat()
会一直返回正确的数字,直到无穷大。
斐波那契演示(int:parseInt():parseFloat())
(在Chrome中测试)
1e+20
被强制转换为字符串时,它输出的是"100000000000000000000"
,然后被解析为正确的数字。而1e+21
则输出"1e+21"
。尝试一下我在答案中写的"" + <number>求和方法。 - rhaps0dy