parseInt () неправильно анализирует числовые литералы с показателем степени
Я только что заметил, чтоparseInt
Функция не заботится о десятичных дробях в случае целых чисел (числа, содержащиеe
персонаж).
Давайте возьмем пример:-3.67394039744206e-15
> parseInt(-3.67394039744206e-15)
-3
> -3.67394039744206e-15.toFixed(19)
-3.6739e-15
> -3.67394039744206e-15.toFixed(2)
-0
> Math.round(-3.67394039744206e-15)
0
Я ожидал, чтоparseInt
также вернется0
, Что происходит на более низком уровне? ПочемуparseInt
вернуть3
в этом случае (некоторые фрагменты из исходного кода будут оценены)?
В этом примере я используюnode v0.12.1
, но я ожидаю, что то же самое произойдет в браузере и других движках JavaScript.