How to format numbers in JavaScript?
Asked
Active
Viewed 935 times
7

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 Answers
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