-----------------------------------------------------------------------

FAQ Topic - Why does simple decimal arithmetic give strange

results?

-----------------------------------------------------------------------

For example, ` 5 * 1.015 ` does not give exactly

` 5.075 ` and ` 0.06+0.01 ` does

not give exactly ` 0.07 ` in javascript.

ECMAScript numbers are represented in binary as IEEE-754 (IEC 559)

Doubles, with a resolution of 53 bits, giving an accuracy of

15-16 decimal digits; integers up to about ` 9e15 ` are precise, but

few decimal fractions are. Given this, arithmetic is as exact

as possible, but no more. Operations on integers are exact if

the true result and all intermediates are integers within that

range.

In particular, non-integer results should not normally be

compared for equality; and non-integer computed results

commonly need rounding; see 4.6.

http://msdn2.microsoft.com/en-us/library/7wkd9z69.aspx http://www.merlyn.demon.co.uk/js-misc0.htm#DW4
Otherwise, use ` Math.round ` on the results of expressions which

should be of integer value.

--

Postings such as this are automatically sent once a day. Their

goal is to answer repeated questions, and to offer the content to

the community for continuous evaluation/improvement. The complete

comp.lang.javascript FAQ is at

http://jibbering.com/faq/index.html.

The FAQ workers are a group of volunteers. The sendings of these

daily posts are proficiently hosted by

http://www.pair.com.