On Wednesday 27 October 2004 04:36 pm, Hal Fulton wrote:
| Jason DiCioccio wrote:
| > I'm confused now..  100.0 * 9.95 is clearly 995.  So what exactly is the
| > issue with floating point numbers is making this come out to
| > 994.999999999983 (or wahtever ;))?  If every language is plagued by this
| > problem, then I'd be curious to know the history behind it..
| >
| :) It's not history, it's math.
|
| Here's the short explanation.
|
| Remember repeating decimals, which you learned about in elementary school?
| For example, 1/3 = 0.33333... can't be expressed in a finite number of
| digits.

Not exactly, '1/3' is finite. Rational numbers can be expressed. Irrationals 
cannot. But current standards do not attempt to deal with repeating decimals, 
even though they could. The reason for this seems to be a matter of history 
related to an ability to test inequalities quickly.

IEEE754 is now 20 years old, and is showing its age. I have actually been 
thinking of working on a improved version myself. But there's many details to 
deal with, so who knows... maybe.

T.