Re: float

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

 



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


[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux