trans. (T. Onoma) wrote:
> 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.

Expressed as a single number in either base 10 or 2, 0.333... requires an
infinite number of digits (which is all I said).

Knowing that it is rational, you could separately store the two numbers expressing
that ratio. But that is completely different from traditional floating-point storage,
and the simple traditional methods of (e.g.) addition and subtraction would not
work.

> 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.

Good idea, go for it.

Hal