console.log(parseInt(0.0000008))
// > 8
console.log(parseInt(0.000008))
// > 0
console.log(parseInt(0.0000008, 10))
// > 8
console.log(parseInt(0.000008, 10))
// > 0

以上代码在 macOS Sierra版本10.12.6 上的 Google Chrome版本62.0.3202.94(官方版本)(64位)中运行。
如您所见,该行为不取决于您是否指定基数。
注意:我通常使用~~
而非使用parseInt
,它看起来更安全。
为什么我会得到这些结果?
答案 0 :(得分:20)
parseInt
将其第一个参数字符串化。 0.000008
字符串化为'0.000008'
,但0.0000008
字符串化为'8e-7'
。
如果parseInt
在输入中找到无效字符,它会忽略该字符及其后的所有内容。对于基数10,.
和e
无效(.
对任何基都都无效),因此parseInt
将'0.000008'
视为'0'
并且'8e-7'
为'8'
。
我不知道你在这里尝试做什么,但parseInt
不是这样做的工具。