How to parseInt "09" into 9 ?
How to parseInt a string with leading 0
Asked Answered
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.
You can also do:
Number('09') => 9
This returns the integer 9 on IE7, IE8, FF3, FF4, and Chrome 10.
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);
}
}
})();
parseInt("09", 10);
or
parseInt(parseFloat("09"));
parseInt("09",10);
returns 9 here.
It is odd.
alert(parseInt("09")); // shows 9. (tested with Opera 10)
@JonH: Right. Thanks for warning. Since he wrote string instead of String I was mistaken. –
Baran
Depending on the browser and version parseInt("09") can return 0. It is a bug. –
Noctambulism
@JonH: can you please check this: w3schools.com/jsref/jsref_parseInt.asp document.write(parseInt("010") also displays 10 here. –
Baran
@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. –
Haynie
@MatthewCrumley—an old comment but what the heck - ES5 removes that behaviour, so compliant browsers should treat
parseInt('08')
as base 10. –
Cathartic © 2022 - 2024 — McMap. All rights reserved.