浮动状态显示Turbo C值不正确

时间:2013-10-23 09:13:29

标签: turbo-c

执行此步骤时,实际上应该从If

获取else的值
#include<stdio.h>
void main()
{
 float a=0.9;
 clrscr();
 if(a<0.9)
  printf("value from if a %f",a);
 else
  printf("value from else a %f",a);
getch();

}

上述代码的输出来自If。

只需检查以下代码,这将正确输出到其他部分

#include<stdio.h>
void main()
{
 float a=0.8;
 clrscr();
 if(a<0.8)
  printf("value from if a %f",a);
 else
  printf("value from else a %f",a);
 getch();
}

上述代码的输出来自else

我试过0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9

0.7,0.9仅转到if其他人转到else

请解释这种变化。

1 个答案:

答案 0 :(得分:0)

根据IEEE格式,浮点存储为2的幂。这是浮点数比较的常见问题。

尝试添加.f

来更改代码
#include<stdio.h>
void main()
{
 float a=0.9f;
 clrscr();
 if(a<0.9f)
  printf("value from if a %f",a);
 else
  printf("value from else a %f",a);
getch();

}

否则你需要有多少精确度来进行比较。您可以使用delta(const float delta = 0.000001;)并使用您的比较加/减该值。就像在页面上给出的那样:

http://www.softwareandfinance.com/CPP/FAQ_Floating_Point.html