Floating point woes
Ingo Krabbe
ikrabbe@earthling.net
Tue Jun 5 13:40:00 GMT 2001
On Sat, 2 Jun 2001, Rafael Herrera wrote:
> Hello,
>
> I've inherited a program wich has started to crash after attempting to
> compare floating point numbers (doubles to be precise). For example, a
> construct like this:
>
> if (a/2 > b)
> {
> <..>
> }
>
> would be true, even though the a/2 and b are equal.
>
> What is the recommended procedure to compare two doubles? If not
> recommended, is there a tool that can scan the sources and report the
> instances in which these potentially problematic constructs occur?
>
> Thank you
> --
> Rafael
>
Its common to compare equality of floats against an epsilon distance,
because of internal rounding troubles.
if ( abs(a/2-b) > epsilon )
with epsilon in a range which fits into precision and to our experiment:
epsilon = 1e-5 for example.
CU INGO
More information about the Gcc-help
mailing list