From: "trans. (T. Onoma)" Date: 2004-10-28T05:47:05+09:00 Subject: Re: Rounding error, (100.0 * 9.95).to_i == 994 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.