The toFixed() Function in JavaScript

Mar 14, 2023

JavaScript numbers have a toFixed() method that converts a number to a string and rounds the number to a given number of decimal places. By default, toFixed() rounds to the nearest integer.

const num = 3.1415;

num.toFixed(); // '3'
num.toFixed(2); // '3.14'
num.toFixed(3); // '3.142'

Use Cases

The toFixed() method is most often used to either display prices, or round numbers. For example, here is how you can display a number as a price in USD.

function prettyPrice(num) {
  return `${num.toFixed(2)}`;

prettyPrice(42); // '$42.00'
prettyPrice(20.1); // '$20.10'
prettyPrice(17.76); // '$17.76'

Rounding to a certain number of decimal places is also a common use case. For example, in JavaScript 0.1 + 0.2 === 0.30000000000000004. To work around this issue, you can use toFixed() to round to 1 decimal place.

+(0.1 + 0.2).toFixed(1) === 0.3; // true

Edge Cases

Using toFixed() on a number that's 10^21 or larger returns the number in exponential notation.

(1e20).toFixed(); // '100000000000000000000'
(1e21).toFixed(); // '1e+21'

Because JavaScript numbers are represented using binary floating points, not decimal floating points, using toFixed() with large numbers can have unexpected results.

(0.3).toFixed(16); // '0.3000000000000000'
(0.3).toFixed(17); // '0.29999999999999999'

In general, we don't recommend using toFixed() to round to more than 3 decimal places.

The digits param must be at most 100. num.toFixed(101) throws the following error.

Uncaught RangeError: toFixed() digits argument must be between 0 and 100
    at Number.toFixed (<anonymous>)

Did you find this tutorial useful? Say thanks by starring our repo on GitHub!

More Fundamentals Tutorials