Странное и непоследовательное поведение parseInt на десятичных дробях

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

Ответ 1

parseInt строит свой первый аргумент, если аргумент еще не является строкой. 0.000008 указывает на '0.000008', но 0.0000008 указывает на '8e-7'.

Если parseInt обнаруживает недопустимый символ на входе, он игнорирует этот символ и все после него. . и e являются недопустимыми для базы 10 (и . будет недопустимым для любой базы), поэтому parseInt видит '0.000008' как '0' и '8e-7' как '8'.

Я не знаю, что вы пытались сделать здесь, но parseInt не является инструментом для этого.