7

How to format numbers in JavaScript?


Community
  • 1
  • 1
Daniel Silveira
  • 41,125
  • 36
  • 100
  • 121
  • Does this answer your question? [How to format numbers using JavaScript?](https://stackoverflow.com/questions/5882994/how-to-format-numbers-using-javascript) – Heretic Monkey Nov 03 '21 at 21:04

2 Answers2

11

The best you have with JavaScript is toFixed() and toPrecision() functions on your numbers.

var num = 10;
var result = num.toFixed(2); // result will equal 10.00

num = 930.9805;
result = num.toFixed(3); // result will equal 930.981

num = 500.2349;
result = num.toPrecision(4); // result will equal 500.2

num = 5000.2349;
result = num.toPrecision(4); // result will equal 5000

num = 555.55;
result = num.toPrecision(2); // result will equal 5.6e+2

Currency, commas, and other formats will have to be either done by you or a third party library.

SaaS Developer
  • 9,835
  • 7
  • 34
  • 45
1

The improved script (the previous was buggy, sorry; to be honest I haven't tested this exaustively either), it works like php number_format:

function formatFloat(num,casasDec,sepDecimal,sepMilhar) {
    if (num < 0)
    {
        num = -num;
        sinal = -1;
    } else
        sinal = 1;
    var resposta = "";
    var part = "";
    if (num != Math.floor(num)) // decimal values present
    {
        part = Math.round((num-Math.floor(num))*Math.pow(10,casasDec)).toString(); // transforms decimal part into integer (rounded)
        while (part.length < casasDec)
            part = '0'+part;
        if (casasDec > 0)
        {
            resposta = sepDecimal+part;
            num = Math.floor(num);
        } else
            num = Math.round(num);
    } // end of decimal part
    while (num > 0) // integer part
    {
        part = (num - Math.floor(num/1000)*1000).toString(); // part = three less significant digits
        num = Math.floor(num/1000);
        if (num > 0)
            while (part.length < 3) // 123.023.123  if sepMilhar = '.'
                part = '0'+part; // 023
        resposta = part+resposta;
        if (num > 0)
            resposta = sepMilhar+resposta;
    }
    if (sinal < 0)
        resposta = '-'+resposta;
    return resposta;
}
Rodrigo
  • 4,706
  • 6
  • 51
  • 94