## DEV Community

Chris Bongers

Posted on • Originally published at daily-dev-tips.com

# Vanilla JavaScript String to Number

Sometimes we want to convert a number to a string; in my latest code piece, there was a limit set on a data attribute. This comes true as a string, so how do we convert this to a number in `JavaScript`?

In this case, there is not one but three valid and supported methods of converting our string to a number.

• Number
• parseInt
• parseFloat

## JavaScript Number Method

Number is a generic way of converting. It's actually the more stricter check here are some examples with outputs:

``````<!-- Number -->
console.log(Number(`1337`)); // 1337
console.log(Number(`13.37`)); // 13.37
console.log(Number(`13leet37`)); // NaN
console.log(Number(`13,37`)); // NaN
``````

As you can see it works on actual numbers, but as soon as we use other characters or a comma it won't work.

## JavaScript ParseInt Method

ParseInt converts our string into an integer non rounded.
It has two arguments, the input and the `radix` which is the base number. For us the default is 10

``````<!-- ParseInt -->
var text1 = '1337';
var text2 = '13.37';
var text3 = '13leet37';
var text4 = '13,37';
console.log(parseInt(text1, 10)); // 1337
console.log(parseInt(text2, 10)); // 13
console.log(parseInt(text3, 10)); // 13
console.log(parseInt(text4, 10)); // 13
``````

The downside can be it's rounding everything, so let's look at ParseFloat.

## JavaScript ParseFloat Method

As mentioned the parseFloat is used to return stuff with decimals.

``````<!-- ParseFloat -->
var text1 = '1337';
var text2 = '13.37';
var text3 = '13.3leet37';
var text4 = '13,37';
console.log(parseFloat(text1, 10)); // 13.37
console.log(parseFloat(text2, 10)); // 13
console.log(parseFloat(text3, 10)); // 13.3
console.log(parseFloat(text4, 10)); // 13
``````

Very cool method!

See all these in action on Codepen.

See the Pen Vanilla JavaScript String to Number by Chris Bongers (@rebelchris) on CodePen.

### Thank you for reading, and let's connect!

R

+'1'

Parwinder 👨🏻‍💻

Keep in mind that this also works for hexadecimal.

``````console.log(+"0xF"); // 15
console.log(+"321"); // 321
``````

And so does `~~`

``````console.log(~~"0xF"); // 15
console.log(~~"321"); // 321
``````

Chris Bongers

I Actually didn't know about the ~~ What is it called?

it's the NOT bitwise operator. It changes the 1 by 0 and 0 by 1. In that example, he is doing it twice.

~ 5 => ~0101 => 1010
~~5 => ~(~0101) => ~(1010) => 0101 => 5

w3schools.com/js/js_operators.asp

Chris Bongers

😂👏

Pacharapol Withayasakpunt • Edited

I do realize all methods, but never notice that `parseFloat` trims, but `Number` return `NaN`.

Chris Bongers

Yes, Number is very strict the string can only contain actual numbers!

Craig Nicol (he/him)

Worth knowing that this depends on the user's browser locale. 13,37 is a valid number in French and German, whereas 13.37 is not.

Chris Bongers

You are right, there is the option to use locales on strings and numbers before. but your right good to keep this in mind!

G33kNoob • Edited

Keep posting daily tips, i love to read and learning it
I use parsefloat to parsing bitcoin balance from rpc in my current project

Chris Bongers

Awesome, thanks man! Glad people find them amazing 🤟

Furkan Közen

~~’1’

Chris Bongers

I just saw above, actually didn't know that option 🤯