Search code examples
javascriptfloating-pointnumber-formatting

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

  • (Math.round(num * 100) / 100).toFixed(2);
    

    Live Demo

    var num1 = "1";
    document.getElementById('num1').innerHTML = (Math.round(num1 * 100) / 100).toFixed(2);
    
    var num2 = "1.341";
    document.getElementById('num2').innerHTML = (Math.round(num2 * 100) / 100).toFixed(2);
    
    var num3 = "1.345";
    document.getElementById('num3').innerHTML = (Math.round(num3 * 100) / 100).toFixed(2);
    span {
        border: 1px solid #000;
        margin: 5px;
        padding: 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.