JavaScript:
Rounding numbers
How to:
Here’s how you round numbers in JavaScript using Math.round()
, Math.ceil()
, and Math.floor()
:
let originalNumber = 2.567;
let roundedDown = Math.floor(originalNumber); // 2
let roundedUp = Math.ceil(originalNumber); // 3
let rounded = Math.round(originalNumber); // 3 (since .567 is more than .5)
console.log(roundedDown); // Prints: 2
console.log(roundedUp); // Prints: 3
console.log(rounded); // Prints: 3
To fix to a certain number of decimal places, use toFixed()
:
let twoDecimals = originalNumber.toFixed(2); // "2.57" (returns a string)
console.log(twoDecimals); // Prints: "2.57"
Convert the string back to a number with a unary plus or Number()
:
let numberAgain = +twoDecimals; // 2.57
console.log(numberAgain); // Prints: 2.57
Deep Dive
Rounding numbers isn’t new; it’s as old as numbers. In JavaScript, Math.round()
uses “round half up” tie-breaking: if the fractional part is 0.5, it rounds to the nearest even number.
For more control, toFixed()
might be your go-to, but remember, it returns a string. Converting back to a number might be an extra step but ensures you keep working with numeric types.
Alternatives? Libraries like lodash
offer _.round(number, [precision=0])
for more nuanced control. Or, the newer Intl.NumberFormat
gives you high-precision formatting beyond just rounding.
Speaking of precision, beware of floating-point quirks in JavaScript. 0.1 + 0.2
doesn’t exactly equal 0.3
due to how numbers are stored. Sometimes, rounding becomes necessary to correct such floating-point errors.
See Also
- Mozilla’s Math documentation: MDN Web Docs
- Financial rounding with
Intl.NumberFormat
: ECMAScript Internationalization API lodash
rounding: Lodash Docs