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 the Number
object to have it do your bidding if you prefer that syntax.
Number.prototype.round = function() {
return Math.round(this);
}
var num = 3.5;
alert(num.round())
I've never used Number.toFixed()
before (mostly because most JS libraries provide a toInt()
method), but judging by your results I would say it would be more consistent to use the Math
methods (round
, floor
, ceil
) then toFixed
if cross-browser consistency is what you are looking for.