How to convert a string to an integer in JavaScript
The simplest way would be to use the native Number
function:
var x = Number("1000")
If that doesn't work for you, then there are the parseInt, unary plus, parseFloat with floor, and Math.round methods.
parseInt()
var x = parseInt("1000", 10); // You want to use radix 10
// So you get a decimal number even with a leading 0 and an old browser ([IE8, Firefox 20, Chrome 22 and older][1])
Unary plus
If your string is already in the form of an integer:
var x = +"1000";
floor()
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");
parseFloat()
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"));
round()
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)
What's the best way to convert a number to a string in JavaScript?
like this:
var foo = 45;
var bar = '' + foo;
Actually, even though I typically do it like this for simple convenience, over 1,000s of iterations it appears for raw speed there is an advantage for .toString()
See Performance tests here (not by me, but found when I went to write my own):
http://jsben.ch/#/ghQYR
Fastest based on the JSPerf test above: str = num.toString();
It should be noted that the difference in speed is not overly significant when you consider that it can do the conversion any way 1 Million times in 0.1 seconds.
Update: The speed seems to differ greatly by browser. In Chrome num + ''
seems to be fastest based on this test http://jsben.ch/#/ghQYR
Update 2: Again based on my test above it should be noted that Firefox 20.0.1 executes the .toString()
about 100 times slower than the '' + num
sample.
Javascript convert string to integer
Basic Answer
The reason parseInt is not working is because of the comma. You could remove the comma using a regex such as:
var num = '1,700.00';
num = num.replace(/\,/g,'');
This will return a string with a number in it. Now you can parseInt. If you do not choose a radix it will default to 10
which was the correct value to use here.
num = parseInt(num);
Do this for each of your string numbers before adding them and everything should work.
More information
How the replace works:
More information on replace at mdn:
`/` - start
`\,` - escaped comma
`/` - end
`g` - search globally
The global search will look for all matches (it would stop after the first match without this)''
replace the matched sections with an empty string, essentially deleting them.
Regular Expressions
- A great tool to test regular expressions: Rubular and more info about them at mdn
- If you are looking for a good tutorial here is one.
ParseInt and Rounding, parseFloat
parseInt always rounds to the nearest integer. If you need decimal places there are a couple of tricks you can use. Here is my favorite:
2 places: `num = parseInt(num * 100) / 100;`
3 places: `num = parseInt(num * 1000) / 1000;`
For more information on parseInt look at mdn.
parseFloat could also be used if you do not want rounding. I assumed you did as the title was convert to an integer. A good example of this was written by @fr0zenFry below. He pointed out that parseFloat also does not take a radix so it is always in base10. For more info see mdn.
How to convert a string to number in TypeScript?
Exactly like in JavaScript, you can use the parseInt
or parseFloat
functions, or simply use the unary +
operator:
var x = "32";
var y: number = +x;
All of the mentioned techniques will have correct typing and will correctly parse simple decimal integer strings like "123"
, but will behave differently for various other, possibly expected, cases (like "123.45"
) and corner cases (like null
).
Table taken from this answer
Javascript: Converting String to Number?
For integers, try str = parseInt( str, 10 )
.
(note: the second parameter signifies the radix for parsing; in this case, your number will be parsed as a decimal)
parseFloat
can be used for floating point numbers. Unary +
is a third option: str = +str
.
That being said, however, the term "type" is used quite loosely in JavaScript.
Could you explain why are you concerned with variable's type at all?
Related Topics
Dc.Js - How to Create a Row Chart from Multiple Columns
How to Overcome the Cors Issue in Reactjs
How to Stop a Page from Unloading (Navigating Away) in Js
Regex Created via New Regexp(Mystring) Not Working (Backslashes)
Jquery - Get Text for Element Without Children Text
Element Not Visible Error (Not Able to Click an Element)
Why Does an Onclick Property Set with Setattribute Fail to Work in Ie
Why the Function Called by Settimeout Has No Callstack Limit
Google Maps API V3 - Multiple Markers on Exact Same Spot
Where to Save a Jwt in a Browser-Based Application and How to Use It
JavaScript Settimeout() Won't Wait to Execute
JavaScript Can't Access Private Properties