How can I round a number in JavaScript? .toFixed() returns a string?

javascript, rounding, types

Solution

It returns a string because 0.1, and powers thereof (which are used to display decimal fractions), are not representable (at least not with full accuracy) in binary floating-point systems.

For example, 0.1 is really 0.1000000000000000055511151231257827021181583404541015625, and 0.01 is really 0.01000000000000000020816681711721685132943093776702880859375. (Thanks to `BigDecimal` for proving my point. :-P)

Therefore (absent a decimal floating point or rational number type), outputting it as a string is the only way to get it trimmed to exactly the precision required for display.

Problem

Am I missing something here? ``` var someNumber = 123.456; someNumber = someNumber.toFixed(2); alert(typeof(someNumber)); //alerts string ``` Why does `.toFixed()` return a string? I want to round the number to 2 decimal digits.

Original source

Related problems