I have a problem with my client side script not calculating the same values as my server side code:
For example:
var x = (2.85 * .1);
alert(x);
This gives a figure of 0.28500000000000003
However my server side code (C#) calculates a figures of 0.285 which when rounded to 2 decimal places gives 0.28
If I try and round 0.28500000000000003 to 2 decimal places I get 0.29.
How do I get my Javascript to create a figure that matches my server side code.
It looks like I have to go through 2 lots of rounding – firstly to remove the trailing 3, then the rounding to the required decimal places.
For example:
var x = 0.2850000000003;
x = parseFloat(x.toFixed(3))
x = x.toFixed(2)
alert(x);
Is this the best workaround?
(this is a re-wording of a question I opened and deleted earlier)
.Net uses banker’s rounding. If a number is at the rounding midpoint e.g. 2.5 then the number is rounded to the closest even number, in this case 2. Rounding in this manner eliminates the bias introduced by rounding upwards.
You can use bankers rounding in javascript using the snippet at http://snippets.dzone.com/posts/show/1305.