【发布时间】:2018-04-01 11:49:18
【问题描述】:
第一个项目
#include"stdio.h"
int main()
{
float a=0.7d;
if(a<0.7)
printf("C");
else
printf("C++");
return 0;
}
这个程序输出 C 作为第二个程序
#include"stdio.h"
int main()
{
float a=0.8d;
if(a<0.8)
printf("C");
else
printf("C++");
return 0;
}
输出C++
为什么会这样他们应该为 a 的任何值提供相同的输出。代码中发生了什么?
谁能帮助我理解它?
【问题讨论】:
-
a是float。0.7是double。0.7f将是float。 -
另一个类似的话题(涵盖文字案例):*.com/questions/1839422/…
-
实际上是 0.7d 而不是 0.7f 供参考打开这个 (geeksforgeeks.org/output-of-c-programs-set-65-if-else) link 并查看问题 5
-
0.7d无关紧要,因为它在与任何东西进行比较之前存储在float中。这是后缀很重要的下一个。 -
实际上,每个程序都会询问是否将给定的 double 舍入为 float 会降低其值。这取决于价值,所以没有理由期待相同的答案。最接近 0.7 的 double 是 0.6999999999999999555910790149937383830547332763671875,浮点转换 0.699999988079071044921875,这会降低值。最接近0.8的double是0.8000000000000000444089209850062616169452667236328125,浮点数转换0.800000011920928955078125,增加值。
标签: c floating-point output