How to parseInt a string with leading 0
Asked Answered
G

6

30

How to parseInt "09" into 9 ?

Gegenschein answered 9/10, 2009 at 17:48 Comment(0)
S
57

include the radix:

parseInt("09", 10);
Subaltern answered 9/10, 2009 at 17:49 Comment(0)
I
12

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.

Ironclad answered 8/6, 2011 at 15:50 Comment(0)
C
5

You can also do:

Number('09') => 9

This returns the integer 9 on IE7, IE8, FF3, FF4, and Chrome 10.

Cardiology answered 17/1, 2011 at 22:24 Comment(0)
S
5

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);
    }
  }
})();
Sitting answered 23/10, 2012 at 19:34 Comment(0)
N
2
parseInt("09", 10);

or

parseInt(parseFloat("09"));
Noctambulism answered 9/10, 2009 at 17:50 Comment(0)
B
2
parseInt("09",10);

returns 9 here.

It is odd.

alert(parseInt("09")); // shows 9. (tested with Opera 10)
Baran answered 9/10, 2009 at 17:54 Comment(5)
@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.