Я только что заметил, что функция 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.