ParseInt returns 1 for when passed any number greater or equal to 1e+21.
var x = 1.0e+2; console.log( x == 1e+2 ); console.log( parseInt( x, 10 ) == 100 ); console.log( parseFloat( x ) == 100 ); var x = 1.0e+21; console.log( x == 1e+21 ); console.log( parseInt( x, 10 ) == 1 ); console.log( parseFloat( x ) == 1e+21 );
What do you think the problem is?
I think the problem by be because numbers 1e+21 and greater are represented as strings.
ParseInt might only be looking at valid numbers to parse the number to into an integer. Since e in ’1e21′ is not a number, 1 is the item returned.
Demo: jsbin.com demo
V8 Issue Page