|
Posted by Jerry Stuckle on 11/30/07 12:01
Erwin Moller wrote:
> Tim Roberts wrote:
>> bummerland@gmail.com wrote:
>>> I have a problem with the function fmod.
>>>
>>> Why is fmod(5.7, 0.1) = 0.1 ?? Why is it not 0?
>>
>> Because floating point arithmetic is not exact. The number "5.7"
>> cannot be
>> represented exactly in binary. So, it's quite likely that you are really
>> computing something like fmod(5.69999999999999, 0.1), and that result
>> would
>> be 0.09999999999999, which will print as 0.1.
>>
>> It's not the function that is broken, I am afraid. It is your
>> expectations.
>
> Hi Tim,
>
> The same thought crossed my mind.
> But what is the use of fmod if it uses unexcact representations internally?
> I mean, if you offer such a function, I would expect it does what it
> claims to do (eg in their examples).
> And thus NOT use 'normal' floating points representation, but something
> that respects 6.0 as 6.0 and not 5.9999999999999.
> (I must admit I don't know HOW, but I am sure some smart guy can figure
> something out.)
>
> Wouldn't it be better to dump fmod al together?
> I mean, what to expect from the function?
> What is your opinion?
>
> Regards,
> Erwin Moller
>
Erwin,
It's a limitation of all floating point calculations. And how can you
correct 5.99999999999 to 6.0 and not be sure the former was correct?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Navigation:
[Reply to this message]
|