How to parseInt "09" into 9 ?
6 Answers
This has been driving me nuts -parseInt("02") works but not parseInt("09").
As others have said, the solution is to specify base 10:
parseInt("09", 10);
There's a good explanation for this behaviour here
... In Javascript numbers starting with zero are considered octal and there's no 08 or 09 in octal, hence the problem.
Comments
Re-implement the existing parseInt so that if it is called with one argument then "10" is automatically included as the second argument.
(function(){
var oldParseInt = parseInt;
parseInt = function(){
if(arguments.length == 1)
{
return oldParseInt(arguments[0], 10);
}
else
{
return oldParseInt.apply(this, arguments);
}
}
})();
Comments
parseInt("09",10);
returns 9 here.
It is odd.
alert(parseInt("09")); // shows 9. (tested with Opera 10)
5 Comments
JCasso
@JonH: Right. Thanks for warning. Since he wrote string instead of String I was mistaken.
JonH
Depending on the browser and version parseInt("09") can return 0. It is a bug.
JCasso
@JonH: can you please check this: w3schools.com/jsref/jsref_parseInt.asp document.write(parseInt("010") also displays 10 here.
Matthew Crumley
@JonH: It's not actually a bug. ECMAScript allows implementations to treat numbers with leading zeros as octal. Some implementations do, and some don't.