DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’» is a community of 963,274 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Create account Log in
Cover image for 7 ways to convert a String to Number in JavaScript
Sanchithasr
Sanchithasr

Posted on • Updated on

7 ways to convert a String to Number in JavaScript

1. Using parseInt()

parseInt() parses a string and returns a whole number. Spaces are allowed. Only the first number is returned.
This method has a limitation though. If you parse the decimal number, it will be rounded off to the nearest integer value and that value is converted to string. One might need to use parseFloat() method for literal conversion.

myString = '129' 
console.log(parseInt(myString)) // expected result: 129

a = 12.22
console.log(parseInt(a)) // expected result: 12
Enter fullscreen mode Exit fullscreen mode

2. Using Number()

Number() can be used to convert JavaScript variables to numbers. We can use it to convert the string too number.
If the value cannot be converted to a number, NaN is returned.

Number("10");          // returns 10
Number(" 10  ");       // returns 10
Number("10.33");       // returns 10.33
Enter fullscreen mode Exit fullscreen mode

3. Using Unary Operator (+)

The unary plus operator (+) precedes its operand and evaluates to its operand but attempts to convert it into a number, if it isn't already.

const x = 25;
const y = -25;
console.log(+x); // expected output: 25
console.log(+y); // expected output: -25
console.log(+''); // expected output: 0
Enter fullscreen mode Exit fullscreen mode

4. Using parseFloat()

parseFloat() parses a string and returns a number. Spaces are allowed. Only the first number is returned.

parseFloat("10");        // returns 10
parseFloat("10.33");     // returns 10.33
parseFloat("10 20 30");  // returns 10
parseFloat("10 years");  // returns 10
parseFloat("years 10");  // returns NaN
Enter fullscreen mode Exit fullscreen mode

5. Using Math.floor()

The Math.floor() function returns the largest integer less than or equal to a given number. This can be little tricky with decimal numbers since it will return the value of the nearest integer as Number.

str = '1222'
console.log(Math.floor(str)) // returns 1222

a = 12.22
Math.floor(a) // expected result: 12
Enter fullscreen mode Exit fullscreen mode

6. Multiply with number

Multiplying the string value with the 1 which won’t change the value and also it will be converted to number by default.

str = '2344'
console.log(str * 1) // expected result: 2344
Enter fullscreen mode Exit fullscreen mode

7. Double tilde (~~) Operator

We can use the double tilde operator to convert the string to number.

str = '1234'
console.log(~~str) // expected result: 1234
negStr = '-234'
console.log(~~negStr) // expected result: -234
Enter fullscreen mode Exit fullscreen mode

Here is the comparison of the ways mentioned performance wise. Comment below if you know more methods.
Thank You

Top comments (14)

Collapse
 
rvxlab profile image
RVxLab • Edited on

The double tilde method is actually something I never thought about, but is worth explaining.

The double tilde "operator" is not as much as an operator as it's a double bitwise negation.

Let's cast '64' to 64 using this method, so we do ~~'64'. First we will evaluate ~'64'. As bitwise operations work on binary, '64' is cast to a number. So ~64.

64 in binary is 01000000. ~ will negate all the bits so it becomes 10111111, which is -65 since numbers in JavaScript are signed. Now we negate it again, which becomes 01000000, which is 64 in decimal.

Correction:

I previously stated that 10111111 is -63, which is incorrect. It's actually -65. Sorry about that.

Collapse
 
sanchithasr profile image
Sanchithasr Author • Edited on

Thank you. This was informative. I didn't pay attention about how it works while writing. Will note it down.

Collapse
 
raddevus profile image
raddevus

Thanks for explaining this. When I got to that one, I was wondering what it was. Great explanation.

Collapse
 
jgburet profile image
Jean-Guillaume Buret

You should always pass the base as second argument to parseInt.

Collapse
 
juaneme8 profile image
Juan Ocho

In the first paragraph "If you parse the decimal number, it will be rounded off to the nearest integer value and that value is converted to string. " I think it should say "that value is converted to a number".

Collapse
 
aalphaindia profile image
Pawan Pawar

thanks for the info.

Collapse
 
__junaidshah profile image
Junaid

how would we go about converting a 19 digit string to a number , js behaves very weirdly for that
e.g lets say this is the number 6145390195186705543 and want to convert it into number what it gives me is this 6145390195186705000. not sure why

Collapse
 
mdkawsarislam2002 profile image
Md Kawsar Islam Yeasin

Great explanation.
Thanks! πŸ₯°πŸ’–

Collapse
 
sammy__jnr profile image
갈 μˆœν—€μ—

thanks

Collapse
 
himanshupal0001 profile image
Himanshupal0001

Noice

Collapse
 
lazytyper profile image
Egon Schmid • Edited on

Using x - 0 works, too

Collapse
 
brettcooperr profile image
Brett Cooper

Thanks for the info dude,

Collapse
 
tripleiconsulting profile image
tripleiconsulting

Many thanks for this!

🌚 Friends don't let friends browse without dark mode.

Sorry, it's true.