Consider the following code:
for (var i = 0; i < 3; i++) { var num = i + 0.50; var output = num + " " + Math.round(num) + " " + num.toFixed(0); alert(output); }
In Opera 9.63 I get:
0.5 1 0
1.5 2 2
2.5 3 2
In FF 3.03 I get:
0.5 1 1
1.5 2 2
2.5 3 3
In IE 7 I get:
0.5 1 0
1.5 2 2
2.5 3 3
Note the bolded results. Why are this inconsistencies present? Does this mean that toFixed(0) should be avoided? What’s the correct way to round a number to the nearest integer?
Edit: To answer your edit, use
Math.round. You could also prototype theNumberobject to have it do your bidding if you prefer that syntax.I’ve never used
Number.toFixed()before (mostly because most JS libraries provide atoInt()method), but judging by your results I would say it would be more consistent to use theMathmethods (round,floor,ceil) thentoFixedif cross-browser consistency is what you are looking for.