JavaScript toFixed() Method: How to Master It In 10 Minutes

Have you ever wondered how to format numbers in JavaScript with a fixed number of decimal places? If you have, you might have encountered the JavaScript toFixed() method, which can help you achieve this goal.But what exactly does this method do, and how can you use it effectively? In this blog, we’ll dive into:
  • The ins and outs of the toFixed() method
  • Explore alternative methods
  • Discuss rounding behavior
  • Troubleshoot common errors
  • Compare it with other functions and more.
  • Troubleshooting "toFixed is not a function"
So, let’s get started!

What is toFixed() in JavaScript?

The toFixed() JavaScript math function allows you to specify the number of decimal places to round a number to and returns a string representation of the formatted number. Its syntax is simple:
number.toFixed(digits)

Here, number is the original number, and digits are the number of decimal places you want to display.

const number = 10.123456;
const formattedNumber = number.toFixed(2);
console.log(formattedNumber); 
// Output: "10.12"
JavaScript toFixed() Method
JavaScript toFixed() Method

How to set only 2 decimal places in JavaScript?

Limiting the number of decimal places to two is a common requirement, especially when dealing with currencies or percentages. Using toFixed(), you can round to 2 decimal places:
const number = 15.789;
const formattedNumber = number.toFixed(2);
console.log(formattedNumber); 
// Output: "15.79"

JavaScript toFixed() without rounding

Although toFixed() is a convenient function, it does have limitations, particularly in its rounding behavior. If you want to avoid rounding and keep the decimal places intact, you can use a combination of Math.floor() and multiplication.

Let’s see an example without rounding:

const number = 25.789;
const fixedNumber = Math.floor(number * 100) / 100;
console.log(fixedNumber); 
// Output: 25.78

JavaScript toFixed() with rounding

When using toFixed(), it’s important to understand how it handles rounding. Let’s consider an example:

const number1 = 1.346;
const formattedNumber1 = number1.toFixed(2);
console.log(formattedNumber1); 
// Output: "1.35"

const number2 = 1.344;
const formattedNumber2 = number2.toFixed(2);
console.log(formattedNumber2); 
// Output: "1.34"

As you can see, toFixed() rounds the number to the nearest decimal value. It follows the standard rounding rules: rounding up when the next decimal value is 5 or higher, and rounding down the number when it’s less than 5.

JavaScript toFixed() return number instead of string

Remember, toFixed() returns a JavaScript string representation of the formatted number. If you need to perform further calculations or comparisons, you may want to convert it back to a number.

Here is an example of how to return a number instead of a string using the toFixed() method:

const number = 15.789;
const formattedNumber = parseFloat(number.toFixed(2));
console.log(formattedNumber); 
// Output: 15.79

By using JavaScript parseFloat(), we convert the string back to a number for further operations.

Comparing toFixed() vs. round()

While toFixed() is used for formatting numbers with a fixed number of decimal places and returns a string, Math.round() is used for rounding a number to the nearest integer and returns an integer.

const number= 1.346;

const roundedNumber1 = number.toFixed(2);
console.log(roundedNumber1); 
// Output: "1.35"

const roundedNum2 = Math.round(number);
console.log(roundedNum2); 
// Output: 1
As you can see, toFixed() rounds up, while Math.round() returns the nearest integer 1.

Comparing toFixed() vs. toPrecision()

In addition to toFixed(), JavaScript offers another function called toPrecision() for formatting numbers.

The toPrecision() method is used to format a number with a specified number of significant digits. It may include both integer and fractional parts, and it also rounds the number if necessary.

const number = 123.456789;

const roundedNumber = number.toFixed(2);
console.log(roundedNumber); 
// Output: "123.46"

const formattedNumber = number.toPrecision(5);
console.log(formattedNumber); 
// Output: "123.46"

In this example, the toPrecision(5) call formats the number with a total of 5 significant digits and returns the string “123.46”.

Remove trailing zeros

Sometimes, toFixed() can result in trailing zeros after the decimal point. If you want to remove them, you can use a regular expression:

const number = 5.000;
const formattedNum = number.toFixed(2).replace(/\.?0+$/, "");
console.log(formattedNum); 
// Output: "5"

By using the regular expression /\.?0+$/, we remove the decimal point and any trailing zeros.

Troubleshooting JavaScript toFixed is not a function error

If you encounter an error stating toFixed is not a function it’s likely because you’re attempting to use toFixed() a JavaScript variable that isn’t a number or null. Ensure that the value you’re formatting is a numeric data type:

const userInput = "Hello, World!";
const formattedString = userInput.toFixed(2); 
// Error: toFixed is not a function

How to handle this scenario? You can do a type check using the JavaScript typeof operator as shown below to safely apply the toFixed() method.

const userInput = 'Hello World!';
if (userInput && typeof userInput === 'number') {
  const formattedString = userInput.toFixed(2); 
}
else {
  console.log('Input value is not a valid number.')
}

The code checks if the userInput is a number and, if so, formats it to have two decimal places; otherwise, it outputs an error message indicating that the input is not a valid number.

Frequently asked questions

let number = 10.2;
if (number % 1 !== 0) {
number = number.toFixed(2);
}
console.log(number);
// Output: 10.20
No. The toFixed() meant to be used on individual numbers, not on entire array. You need to iterate through the array and apply toFixed() to each element in an array.

To format a number with 10 decimal places, you can use it like:

let number = 10.2;
console.log(number.toFixed(10));
// Output: 10.2000000000

Ensure that the JavaScript variable you are applying toFixed() to is a numeric value, not a string. You can use either parseFloat() or parseInt() to convert a string to a number of needed.

The toFixed() always returns a string representation of the number. If you want to keep it as a number you can use parseFloat() or Number() to convert the result back to a number after using toFixed() function.

Conclusion

You’ve now mastered the toFixed() function in JavaScript. We covered its usage for setting decimal places, alternatives to avoid rounding, comparisons with other functions, troubleshooting errors, and additional formatting considerations. With this knowledge, you can confidently format numbers to suit your needs in JavaScript. 

So go ahead, experiment, and unlock the power of number formatting in your JavaScript applications!

Scroll to Top