Re: float

Amit Virdi <[email protected]>
Newsgroups gmane.linux.c-programming
Message-ID <[email protected]>
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 [email protected]
> 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.