parseInt对小于10^-7的数值返回错误结果,原因是什么?
为什么parseInt(0.000001)返回0,而parseInt(0.0000001)返回1?
- 核心原因是
parseInt函数会先把传入的参数强制转换为字符串,再从左到右解析整数部分。 - 对于
0.000001,它转成字符串是"0.000001",parseInt从开头读取,第一个有效整数是0,后面的小数点和数字会被直接忽略,所以返回0。 - 对于
0.0000001,这个数值等价于1e-7(科学计数法表示),当它转成字符串时会自动变成"1e-7"。parseInt解析这个字符串时,只会读取到第一个非数字字符前的内容——也就是开头的"1",后面的"e-7"会被忽略,所以最终返回1。
内容的提问来源于stack exchange,提问作者Vayun
相关产品推荐
相关产品推荐

