# Format number to always show 2 decimal places

## Format number to always show 2 decimal places

I would like to format my numbers to always display 2 decimal places, rounding where applicable.
Examples:
number display
—— ——-
1 1.00
1.341 1.34
1.345 1.35

I have been using this:
parseFloat(num).toFixed(2);

But it’s displaying 1 as 1, rather than 1.00.

### Solution 1:

This works fine in FF4:

``````parseFloat(Math.round(num3 * 100) / 100).toFixed(2);
``````

Live Demo

``````var num1 = "1";
document.getElementById('num1').innerHTML = parseFloat(Math.round(num1 * 100) / 100).toFixed(2);

var num2 = "1.341";
document.getElementById('num2').innerHTML = parseFloat(Math.round(num2 * 100) / 100).toFixed(2);

var num3 = "1.345";
document.getElementById('num3').innerHTML = parseFloat(Math.round(num3 * 100) / 100).toFixed(2);``````
``````span {
border: 1px solid #000;
margin: 5px;
}``````
``````<span id="num1"></span>
<span id="num2"></span>
<span id="num3"></span>``````

Note that it will round to 2 decimal places, so the input `1.346` will return `1.35`.

### Solution 2:

``````Number(1).toFixed(2);         // 1.00
Number(1.341).toFixed(2);     // 1.34
Number(1.345).toFixed(2);     // 1.34 NOTE: See andy's comment below.
Number(1.3450001).toFixed(2); // 1.35
``````
``````document.getElementById('line1').innerHTML = Number(1).toFixed(2);
document.getElementById('line2').innerHTML = Number(1.341).toFixed(2);
document.getElementById('line3').innerHTML = Number(1.345).toFixed(2);
document.getElementById('line4').innerHTML = Number(1.3450001).toFixed(2);``````
``````<span id="line1"></span>
<br/>
<span id="line2"></span>
<br/>
<span id="line3"></span>
<br/>
<span id="line4"></span>``````

### Solution 3:

This answer will fail if `value = 1.005`.

As a better solution, the rounding problem can be avoided by using numbers represented in exponential notation:

``````Number(Math.round(1.005+'e2')+'e-2'); // 1.01
``````

Cleaner code as suggested by @Kon, and the original author:

``````Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces)
``````

### Solution 4:

``````var num = new Number(14.12);
console.log(num.toPrecision(2));//outputs 14
console.log(num.toPrecision(3));//outputs 14.1
console.log(num.toPrecision(4));//outputs 14.12
console.log(num.toPrecision(5));//outputs 14.120
``````

### Solution 5:

``````var num = 1.2353453;
num.toFixed(2); // 1.24
``````

Example: http://jsfiddle.net/E2XU7/

### Solution 6:

A much more generic solution for rounding to N places

``````function roundN(num,n){
return parseFloat(Math.round(num * Math.pow(10, n)) /Math.pow(10,n)).toFixed(n);
}

console.log(roundN(1,2))
console.log(roundN(1.34,2))
console.log(roundN(1.35,2))
console.log(roundN(1.344,2))
console.log(roundN(1.345,2))
console.log(roundN(1.344,3))
console.log(roundN(1.345,3))
console.log(roundN(1.3444,3))
console.log(roundN(1.3455,3))

Output

1.00
1.34
1.35
1.34
1.35
1.344
1.345
1.344
1.346
``````