Question

I want to convert the string "15,678" into a value 15678. Methods parseInt() and parseFloat() are both returning 15 for "15,678." Is there an easy way to do this?

Was it helpful?

Solution

The simplest option is to remove all commas: parseInt(str.replace(/,/g, ''), 10)

OTHER TIPS

One way is to remove all the commas with:

strnum = strnum.replace(/\,/g, '');

and then pass that to parseInt:

var num = parseInt(strnum.replace(/\,/g, ''), 10);

But you need to be careful here. The use of commas as thousands separators is a cultural thing. In some areas, the number 1,234,567.89 would be written 1.234.567,89.

If you only have numbers and commas:

+str.replace(',', '')

The + casts the string str into a number if it can. To make this as clear as possible, wrap it with parens:

(+str.replace(',', ''))

therefore, if you use it in a statement it is more separate visually (+ +x looks very similar to ++x):

var num = (+str1.replace(',', '')) + (+str1.replace(',', ''));

Javascript code conventions (See "Confusing Pluses and Minuses", second section from the bottom):

http://javascript.crockford.com/code.html

You can do it like this:

var value = parseInt("15,678".replace(",", ""));

Use a regex to remove the commas before parsing, like this

parseInt(str.replace(/,/g,''), 10)
//or for decimals as well:
parseFloat(str.replace(/,/g,''))

You can test it here.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top