Related articles |
---|
[4 earlier articles] |
Re: My scripting language - any suggestions? jaluber@gmail.com (Johannes) (2008-08-30) |
Re: My scripting language - any suggestions? mailbox@dmitry-kazakov.de (Dmitry A. Kazakov) (2008-08-31) |
Re: My scripting language - any suggestions? ademakov@gmail.com (Aleksey Demakov) (2008-08-31) |
Re: My scripting language - any suggestions? mailbox@dmitry-kazakov.de (Dmitry A. Kazakov) (2008-08-31) |
Re: My scripting language - any suggestions? licaner@gmail.com (lican) (2008-08-31) |
Re: My scripting language - any suggestions? mailbox@dmitry-kazakov.de (Dmitry A. Kazakov) (2008-09-01) |
Re: My scripting language - any suggestions? ademakov@gmail.com (Aleksey Demakov) (2008-09-02) |
Re: My scripting language - any suggestions? mailbox@dmitry-kazakov.de (Dmitry A. Kazakov) (2008-09-02) |
Re: My scripting language - any suggestions? licaner@gmail.com (lican) (2008-09-04) |
Re: My scripting language - any suggestions? jaluber@gmail.com (Johannes) (2008-09-06) |
Re: My scripting language - any suggestions? ademakov@gmail.com (Aleksey Demakov) (2008-09-07) |
Re: My scripting language - any suggestions? bobduff@shell01.TheWorld.com (Robert A Duff) (2008-09-07) |
Re: My scripting language - any suggestions? mailbox@dmitry-kazakov.de (Dmitry A. Kazakov) (2008-09-08) |
[2 later articles] |
From: | "Aleksey Demakov" <ademakov@gmail.com> |
Newsgroups: | comp.compilers |
Date: | Tue, 2 Sep 2008 00:54:12 +0700 |
Organization: | Compilers Central |
References: | 08-08-069 08-08-081 08-08-100 08-08-106 08-08-107 08-08-109 |
Keywords: | OOP, types |
Posted-Date: | 01 Sep 2008 17:32:57 EDT |
On Sun, Aug 31, 2008 at 9:58 PM, Dmitry A. Kazakov
<mailbox@dmitry-kazakov.de> wrote:
>> If you use hardware-supported 32-bit representation of floats then
>> there will be a problem with precision. Some Int values cannot not be
>> precisely represented as floats.
>
> That is up to inherited operations. Basically, if Integer inherits
> anything from Float it also does the property of Float being an
> interval of [real] numbers, with the consequences of. If Integer can
> do this operation better, then it should override. The third
> alternative is adding ideal values to the class in the form of NaN or
> else an exception propagation.
>
Sorry, I still don't get how the inheritance thing alone could
automagically resolve all the subtle numeric issues.
Suppose we have a method that simply returns the sum of two args:
m(a, b) { return a + b; }
I could understand what happens If both args have the same type.
For instance if ints and floats both use 32-bit representation then
m(1, 2000000000)
will quite obviously result in 2000000001
while
m(1.0, 2000000000,0)
will result in 2000000000.0 - 32-bit floats do not have enough
precision to keep the '1' in the end.
Now what will happen if one argument is int and another
is float ?
m(1, 2000000000.0)
will it be 2000000001, or 2000000000,0, or a runtime error?
In any case the user might prefer one way or another. In
the last example if the user wants to preserve the precision
then this could be done by converting float to int. On the
other hand for m(1, 1.0e15) conversion to int will not work
so it should not be done.
So do you reserve the possibility for a user to do the explicit
conversion? Or never is never and explicit conversion is always
a design problem?
Regards,
Aleksey
Return to the
comp.compilers page.
Search the
comp.compilers archives again.