hoju - 4 months ago 29

Javascript Question

in JavaScript, the typical way to round a number to N decimal places is something like:

`function round_number(num, dec) {`

return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);

}

However this approach will round to a

Any ideas?

Answer

That's not a rounding ploblem, that is a display problem. A number doesn't contain information about significant digits; the value 2 is the same as 2.0000000000000. It's when you turn the rounded value into a string that you have make it display a certain number of digits.

You could just add zeroes after the number, something like:

```
var s = number.toString();
if (s.indexOf('.') == -1) s += '.';
while (s.length < s.indexOf('.') + 4) s += '0';
```

(Note that this assumes that the regional settings of the client uses period as decimal separator, the code needs some more work to function for other settings.)