# Round a Number to 2 Decimal Places | JavaScript

You can use:

**Or**

But, it seems like **Math.round()** is a better solution, but it is not! In some cases it will NOT round correctly. Also, **toFixed()** will NOT round correctly in some cases.

## Approximate Rounding

To correct the rounding problem with the previous Math.round() and toFixed(), you can define a custom rounding function that performs a **"nearly equal"** test to determine whether a fractional value is sufficiently close to a midpoint value to be subject to **midpoint rounding.**

The following function return the value of the given number rounded to the nearest integer accurately.

#### Output:

Using the above function with halfway numbers, you will get either the **upper rounded** value as expected, or the **lower rounded** value sometimes depending on the input.

## Using Number.toLocaleString()

The toLocaleString() method returns a string with a language-sensitive representation of the number. The following **custom rounding function** using Number.toLocaleString() return the value of the given number rounded to the nearest integer accurately.

## Rounding

Rounding means making a number simpler but keeping its value close to what it was. There is not a **universal solution** for everyone. There are several different rounding **algorithms** , your implementation can be different, depends on your requirements.

## Rounding Numbers in JavaScript

In most cases JavaScript developers using **Math.round()** or **toFixed()** for rounded to the nearest integer. But, it seems like Math.round() is a better solution, but it is not! In some cases it will NOT round correctly. Also, toFixed() will also NOT round correctly in some cases.

## Math.round()

#### Output:

In the above case the output is **5.01** instead of **5.02.** If you execute the 5.015 with the above function **roundTo()** the output will be 5.02, that is the correct answer.

## toFixed()

#### Output:

In the above case the output is **1.55** instead of **1.56** . If you execute the 1.555 with the above function **roundTo()** the output will be 1.56, that is the correct answer.

When the rounded number is increased, then the given number is said to be **rounded up,** whereas, if the rounded number is decreased, then it is said to be **rounded down.**