Math.round(num) vs num.toFixed(0) and browser inconsistencies

cross-browser, javascript

Solution

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.

Problem

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?

Original source

Related problems