Re: Possreps and numeric types

From: V.J. Kumar <vjkmail_at_gmail.com>
Date: 28 Mar 2007 13:26:09 +0200
Message-ID: <Xns99014C3B43749vdghher_at_217.22.228.20>


Matthias Klaey <mpky_at_hotmail.com> wrote in news:6l7j03di6tdmf1k68s7oa2d6fto0lv9ko3_at_4ax.com:

> "V.J. Kumar" <vjkmail_at_gmail.com> wrote:
>

>>"David Cressey" <cressey73_at_verizon.net> wrote in
>>news:KD2Oh.1604$Rp2.1491_at_trndny04: 
>>
>>> 
>>> "V.J. Kumar" <vjkmail_at_gmail.com> wrote in message
>>> news:Xns98FFEB79C9D6Bvdghher_at_217.22.228.20...
>>>> Matthias Klaey <mpky_at_hotmail.com> wrote in
>>>> news:gqsg031cmfnr5p5fbiokksmaf8psios4hh_at_4ax.com:
>>>>
>>>> > I used to teach that if you calculate "2 + 2" on a computer, the
>>>> > result would be somewhere between 3 and 5,
>>>>
>>>> You are kidding, right ?  If not,  you might want to fix your
>>>> computer for the sake of your poor students at least !
>>> 
>>> I think you missed the irony in the original teaching.  If you are
>>> working with integers,
>>> there is only one answer that is somewhere between 3 and 5. 
>>
>>I may be missing the irony,  but how can adding integer 2 and 2 can 
>>produce anything but 4 ? "Somewhere" implies vagueness or ambiguity, 
>>at least in the English I am accustomed to.  Is it some sort of new
>>post- modern kind of math,  or English,  I am unfamiliar with ?  It
>>seems that the Swiss secondary education system is in even worse shape
>>than the American !
>>
>>> Everything works. If you are working with floating point numbers, 
>>> and approximations, you can get some nasty surprises.
>>
>>Not when adding floating 2.0 and 2.0,  it is still 4.0 surprisingly 
>>enough for some !

>
> [...]
>
> Here is a very simple "real world" example such as an interest
> calculation on a capital (capital 21200$, interest 2.5%, calculate
> capital + interest):
>
> 21200 * 1.025 = 21730
>
> As you can verify easily with hand calculation, this is exact.
>
> Now evaluate this same calculation with any computer language that
> implements the IEEE 854 standard (such as C, C++, Java, the .NET
> languages, Visual Basic, Delphi and numerous others, also MS SQL
> Server, Oracle; basically *all* languages that rely on the Intel
> Floating Point architecture).
>
> The result you will get is that
>
> 21200 * 1.025 *is not equal to* 21730
>
> because 21200 * 1.025 is repersented as 40D5387FFFFFFFFF
> and 21730 is represented as 40D5388000000000
>

It is very sweet of you to provide a trivial and very well known to any programmer demonstration that IEEE 754/854 floating point implementation  does not (and cannot) represent *all* real numbers and that may create problems, but what has it got to do with your absurd statement that "2+2" is somewhere between 3 and 4 ?

> The "Swiss" part is that I am using dramatic oversimplification

Your statement about "2+2 != 4" is not a "dramatic oversimplification" but simply false even with IEEE 754 representation. Some students of yours may actually believe that nonsense !

>
> Greetings
> Matthias Kläy
Received on Wed Mar 28 2007 - 13:26:09 CEST

Original text of this message