In floating point comparisons, test for range rather testing for equality. Something like:
int compare_float(float f1, float f2)
{
float precision = 0.00001;
if (((f1 - precision) < f2) &&
((f1 + precision) > f2))
{
return 1;
}
else
{
return 0;
}
}
This is because, floating point numbers are stored in binary format and rounds off in strange ways.
On 01/11/2011 01:16 PM, Thomas Weber wrote:
> Am 11.01.2011 08:38, schrieb ratheesh k:
>> I could not understand why it getting printed like this. Could any
>> body tell me.
>>
>> #include <stdio.h>
>>
>> int main()
>> {
>> float f=0.0f;
>> int i;
>>
>> for(i=0;i<10;i++)
> missing braces here?
>> f = f + 0.1f;
>>
>> if(f == 1.0f)
>> printf("f is 1.0 \n");
>> else
>> printf("f is NOT 1.0\n");
>>
>> return 0;
>> }
>> --
>
>
> Thomas
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
~Amit Virdi
--
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Linux Assembler]
[Git]
[Kernel List]
[Fedora Development]
[Fedora Announce]
[Autoconf]
[Yosemite Campsites]
[Yosemite News]
[GCC Help]