I just want to thank all of you for a stimulating, interesting and, in 
the end, informational discussion. Now I know why COBOL uses V99 
numbers!

Has there been any consideration of using a Numeric class that is fixed 
point? Something that is more like 995/100 representation internally? 
There is sense is storing money in pennies instead of decimal dollars, 
but it makes things a little more messy.

Dan


On Oct 28, 2004, at 04:23, Mark Hubbart wrote:

> On Thu, 28 Oct 2004 05:57:53 +0900, Jamis Buck <jgb3 / email.byu.edu> 
> wrote:
>> 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.
>>
>> ... That's not what I learned in school. How many decimal digits does 
>> it
>> take to express 1/3, then?
>
> Reconfigure your misconceptions: decimal numeric notation has no basis
> in reality. It is simply a way for humans to write down numbers.
>
> Decimal, like binary, is a notation, a way to represent finite
> numbers. It can not represent all finite numbers satisfactorily,
> though; the notation has it's failings. One of the failings is shown
> when representing finite rational numbers where the denominator is not
> solely a multiple of powers of 2 and 5 (the factors of ten).
>
> 1/5 => 0.2
> 1/2 => 0.5
> 1/4 => 0.25
> 1/7 => 0.142857142857143.... (whoops)
>
> In binary notation, you can only have finite representations of
> rational numbers whose denominators are powers of two (the factors
> of... two). The examples above translated into simple binary math:
>
> 1/101 => 0.0011001100110011.... (repeats)
> 1/10 => 0.1
> 1/100 => 0.01
> 1/111 => 0.0010010010010010.... (repeating)
>
> To further confuse the subject. What you are representing when you
> write the decimal number 42.23 is the rational number, 4223/100; aka
> 42 23/100, forty-two and twenty-three hundredths. That is a fraction;
> a rational number. Decimal notation is simply a more convenient way of
> writing it down, for making calculations or keeping records or
> whatever.
>
> In closing: Decimal numbers are made up! They aren't real! They are
> all in your head! ;)
>
> cheers,
> Mark
> ps: I know this doesn't give a straight answer to your question. I'm
> just arguing out that the question is somewhat irrelevant, since 1/3
> is a rational number, and decimal notation is a flawed way of
> representing rational numbers. A convenient way, but flawed
> nonetheless.
>