一个浮点变量显示预期结果,但其他浮点数不显示

时间:2017-10-18 03:51:47

标签: c

float a = 0.5;
float b = 0.7;
printf("%f",a);
printf("\n");
printf("%f",b);
if(a == .5)
  printf("\nOK\n");
else
   printf("NOTOK\n");

if(b == .7)
  printf("OK");
else
  printf("NOTOK");

对于a和b,似乎输出应该是正常的,但对于b而言输出是正常的但是NOTOK。为什么呢?

2 个答案:

答案 0 :(得分:1)

对于float个数字,您需要将其表示为示例:0.5f。下面的示例已经过测试且工作正常。

float a = 0.5;
float b = 0.7;
printf("%f",a);
printf("\n");
printf("%f",b);

if(a == 0.5f && b == 0.7f)
{
  printf("\nOK\n");
}
else
{
   printf("NOTOK\n");
}

答案 1 :(得分:0)

.5.7是常量,它们被翻译为double。在末尾添加“f”符号,告诉编译器.5f.7f是浮点数。

if(a == .5f)
  printf("\nOK\n");
else
   printf("NOTOK\n");

if(b == .7f)
  printf("OK");
else
  printf("NOTOK");