6

I have some zeros prior to a positive integer. I want to remove the zeros so only the positive integer remains. Like '001' will only be '1'. I thought the easiest way was to use parseInt('001'). But what I discovered is that it don't works for the number 8 and 9. Example parseInt('008') will result in '0' instead of '8'.

Here are the whole html code:

<html> <body>
<script>
var integer = parseInt('002');
document.write(integer);

</script>
</body> </html>

But can I somehow report this problem? Do anyone know an another easy workaround this problem?

1
  • also, stripping leading zeros by using parseInt('008').toString() is very clumsy, consider using RegExp instead Commented Dec 19, 2010 at 4:44

4 Answers 4

15

You have to specify the base of the number (radix)

parseInt('01', 10);
Sign up to request clarification or add additional context in comments.

1 Comment

Yep, and a JS code quality tool like JSLint (jslint.com) can give you a heads up about it :)
10

This is documented behavior: http://www.w3schools.com/jsref/jsref_parseInt.asp

Strings with a leading '0' are parsed as if they were octal.

2 Comments

MDN docs are generally of much higher quality than their w3schools counterparts. Here's the relevant MDN page.
FireFox 21 has curiously decided to remove this functionality. Chrome has apparently been that way for a while: stackoverflow.com/questions/14542377
3

Number prefixed with zero is parsed as octal.

1 Comment

That's not the whole story -- it's browser and version dependent.
1

This is not actually a bug. For legacy reasons strings starting with 0 are interpreted in octal, and in octal there is no digit 8. To work around this you should explicitly pass a radix (i.e. parseInt("008", 10)).

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.