Skip to content

How to Convert a String to a Number in JavaScript: Methods and Examples

Introduction

When working with JavaScript, it's common to encounter situations where you need to convert a string to a number. Whether you're dealing with user input, data from an API, or manipulating values in your code, knowing how to properly cast a string to a number is an essential skill for any JavaScript developer.

Problem

Strings and numbers are fundamentally different data types in JavaScript. While you can perform mathematical operations on numbers, the same operations on strings will produce different and often unexpected results. To avoid bugs and ensure your code works as intended, you need to convert strings to numbers when necessary.

Context

JavaScript provides several built-in methods to cast a string to a number, each with slightly different behavior:

  1. Number(): This function converts the string to a number. If the string does not contain a valid number, it returns NaN (Not a Number).

  2. Unary Plus (+): Placing a + before a string is a shorthand way to convert it to a number, equivalent to calling Number().

  3. parseInt() and parseFloat(): These functions parse a string and return an integer or floating-point number, respectively. They stop parsing at the first non-numeric character.

  4. Math methods: Math.floor(), Math.ceil(), and Math.round() can be used with parseFloat() to convert a string to an integer with different rounding behavior.

Solution

Here's how you can cast a string to a number in JavaScript using the different methods:

Using Number():

js
let str = "123";
let num = Number(str);
console.log(num); // 123

Using Unary Plus (+):

js
let str = "123";  
let num = +str;
console.log(num); // 123

Using parseInt() and parseFloat():

js
let intString = "123px";
let floatString = "123.45px"; 
let intNum = parseInt(intString);
let floatNum = parseFloat(floatString);
console.log(intNum); // 123
console.log(floatNum); // 123.45

Using Math methods:

js
let str = "123.45";
let num = Math.floor(parseFloat(str)); 
console.log(num); // 123

When deciding which method to use, consider the following:

  • Use Number() or + when you expect the string to be a valid number.
  • Use parseInt() or parseFloat() when the string may contain non-numeric characters and you want to extract the leading number.
  • Use Math methods with parseFloat() when you need to convert to an integer with specific rounding.

Remember to handle cases where the conversion might fail, such as checking for NaN results.

Conclusion

Converting strings to numbers is a fundamental task in JavaScript programming. By understanding the different methods available and their nuances, you can write code that properly handles string-to-number conversions. Whether using Number(), unary plus, parseInt()/parseFloat(), or Math methods, choose the approach that best fits your specific needs. With this knowledge, you'll be able to tackle string-to-number conversions with confidence and build more robust JavaScript applications.