parseInt(0.01) == 0
?
精简下@不写代码的码农 的答案
parseInt(0.000001) --> parseInt("1e-6") --> 1
parseInt(0.001) --> parseInt("0.001") --> 0
paseInt首先调用参数的toString方法,JS中精度小于0.000001的数字会自动转化为科学计数的字符串(1e-6)。
parseInt在匹配时,如果找到了以数字开头然后开始会匹配接下来的字符,直到找到不是数字的字符结束,然后输出匹配到的数字
因此就有了以上的奇怪现象。话说一个语言怎么会有这样的问题,解决掉不是很简单么。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
parseInt
在匹配时,如果找到了以数字开头然后开始会匹配接下来的字符,直到找到不是数字的字符结束,然后输出匹配到的数字。它能识别八进制、十六进制等,但是不识别科学计数法,而parseFloat
只识别十进制,还可以识别科学计数法。对于科学计数法,parseInt
和parseFloat
会产生不同的输出:js parseInt之0.0000001陷阱分析小结