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

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.

Javascript 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://msdn.microsoft.com/library/de...6dbf483b41.asp
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.