Display numbers up to two decimals places without trailing zeros

peroija picture peroija · Apr 18, 2012 · Viewed 14.7k times · Source

In my code I will be accepting multiple values, for example:

8.7456
8.7
8

and I need to have them appear as

8.74
8.7
8

i.e. display up to two decimal place.

I understand that .toFixed(2) will help me with the first value, but on the 2nd and 3rd value there will be trailing zeroes that I do not want.

How to produce my desired results?

Answer

Salman A picture Salman A · Apr 18, 2012

Use Number.toFixed to round the number up to two digits and format as a string. Then use String.replace to chop off trailing zeros:

[8.7456, 8.745, 8.74, 8.7, 8].forEach(function(num) {
  var str = num.toFixed(2).replace(/\.?0+$/, "");
  console.log(num, str);
});