help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 0.3*3 == 0.9?


From: Michael Creel
Subject: Re: 0.3*3 == 0.9?
Date: Wed, 25 Aug 2010 23:55:52 +0200



2010/8/25 Jaroslav Hajek <address@hidden>
2010/8/25 Michael Creel <address@hidden>:
> 2010/8/25 Jordi Gutiérrez Hermoso <address@hidden>
>>
>> 2010/8/25 Jordi Gutiérrez Hermoso <address@hidden>:
>> > On 25 August 2010 09:13, Michael Creel <address@hidden> wrote:
>> >> octave:1> 0.3*2 == 0.6
>> >> ans =  1
>> >> octave:2> 0.3*3 == 0.9
>> >> ans = 0
>> >> octave:3>
>> >
>> > http://docs.sun.com/source/806-3568/ncg_goldberg.html
>>
>> Oops, sorry, I hit the "send" button too soon.
>>
>> Anyways, yes, this is completely normal. 0.3 has an infinite binary
>> expansion because its denominator has factors other than 2, so you'll
>> get a rounding error. Use something like abs(0.3*3 - 0.9) < 10*eps
>> instead or whatever seems like an appropriate approximation.
>
> Right, I'm aware of that. My question is whether or not Octave's comparison
> of floats takes it into account. My impression was that it does, so I was
> surprised by this.

Interesting. Where did you get that impression from and what did you
actually expect Octave to do?


--
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz

I thought that comparison of floats returned true if the difference was less than machine precision. I don't recall if there ever was any basis for that belief, though. I guess that I don't really understand what is the usefulness of allowing == to operate on floats. Does Matlab work the same way?
Cheers,
Michael



reply via email to

[Prev in Thread] Current Thread [Next in Thread]