How do I convert a string into an integer in JavaScript?

Is it possible to do this automatically, or do I have to write a subroutine to do it manually?

Is it possible to do this automatically, or do I have to write a subroutine to do it manually?

0 votes

0 votes

**parseInt**Â orÂ **unary plus**Â or evenÂ **parseFloat with floor**Â orÂ **Math.round**

parseInt:

var x = parseInt("1000",10); // you want to use radix // of 10 so you get a decimal number even with a leading 0

unary plus if your string is already in the form of an integer:

var x = +"1000";

if your string is or might be a float and you want an integer:

var x = Math.floor("1000.01"); //floor automatically converts string to number

or, if you're going to be using Math.floor several times:

var floor = Math.floor; var x = floor("1000.01");

If you're the type who forgets to put the radix in when you call parseInt, you can use parseFloat and round it however you like. Here I use floor.

var floor = Math.floor; var x = floor(parseFloat("1000.01"));

Interestingly, Math.round (like Math.floor) will do a string to number conversion, so if you want the number rounded (or if you have an integer in the string), this is a great way, maybe my favorite:

var round = Math.round; var x = round("1000"); //equivalent to round("1000",0)

You don't see this much. valueOf is used mostly internally, according to w3c

var x = "1000".valueOf();

0 votes

Try parseInt function:

var number = parseInt("10");

But there is a problem. If you try to convert "010" using parseInt function, it detects as octal number, and will return number 8. So, you need to specify a radix (from 2 to 36). In this case base 10.

parseInt(string, radix)

Example:

var result = parseInt("010", 10) == 10; // Returns true var result = parseInt("010") == 10; // Returns false

...