parseInt () analisa literais numéricos com expoente incorretamente

Acabei de observar que oparseInt A função não cuida dos decimais no caso de números inteiros (números que contêm oe personagem).

Vamos dar um exemplo:-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

Eu esperava que oparseInt também retornará0. O que está acontecendo no nível mais baixo? PorqueparseInt Retorna3 neste caso (alguns trechos do código fonte seriam apreciados)?

Neste exemplo eu estou usandonode v0.12.1, mas espero que o mesmo aconteça no navegador e em outros mecanismos JavaScript.

questionAnswers(5)

yourAnswerToTheQuestion