Formatting Numbers For Currency Display And More
Posted on 18 Mar 2004
by George (georgec)
Rated 4.06 (Ratings: 3)
- More articles in Site Development
Formatting numbers for currency display and more.
Using it, any supplied argument is rounded off to the nearestinteger, and using the ".5" up rule. For example:
Math.round(25.9) //returns 26Math.round(25.2) //returns 25Math.round(-2.58) //returns -3
If purging numbers of decimals is all that you require, classdismissed!
Taking things a few decimal further
Formatting numbers to specific decimal points still entailsMath.round(), but padded with a little multiplication and division. See if you can identify the magic formula involved, with the below examples:
var original=28.4531) //round "original" to two decimalsvar result=Math.round(original*100)/100 //returns 28.452) // round "original" to 1 decimalvar result=Math.round(original*10)/10 //returns 28.53) //round 8.111111 to 3 decimalsvar result=Math.round(8.111111*1000)/1000 //returns 8.111
In case you haven't picked up on it, the formula to round anynumber to x decimal points is:
1) Multiple the original number by 10^x (10 to the power of x)
3) Divide result by 10^x
Formatting numbers for currency display
|Number.toFixed(x)||Formats any number for "x" number of trailing decimals. The number is rounded up, and "0"s are used after the decimal point if needed to create the desired decimal length.|
|Number.toPrecision(x)||Formats any number so it is of "x" length. Also called significant digits. A decimal point and "0"s are used if needed to create the desired length.|
The best way to see all the subtleties oftoFixed() is to see it in action:
var profits=2489.8237profits.toFixed(3) //returns 2489.824 (round up)profits.toFixed(2) //returns 2489.82profits.toFixed(7) //returns 2489.8237000 (padding)
Displaying any number in currency format can't get any easier!
To toPrecision() now:
var anumber=123.45anumber.toPrecision(6) //returns 123.450 (padding)anumber.toPrecision(4) //returns 123.5 (round up)anumber.toPrecision(2) //returns 1.2e+2 (you figure it out!)
toPrecision() is useful if yournumber must be of a certain length.
var profits=2489.8237if (profits.toFixed) //if browser supports toFixed() methodprofits.toFixed(2)
For those of you who also need to ensure legacy browsers such as IE5 alsoperform the desired number formatting operation, well, then it's time to roll your own function.