提问人:محمود خالد 提问时间:3/7/2023 最后编辑:Jonathan Lefflerمحمود خالد 更新时间:3/7/2023 访问量:70
为什么 dpes 此代码打印“False”?为什么不打印“True”?[复制]
Why dpes this code print "False"? Why doesn't it print "True"? [duplicate]
问:
当我运行此代码时,它会打印 .我不清楚False
#include <stdio.h>
int main()
{
float f = 0.1;
if (f == 0.1)
printf("True");
else
printf("False");
}
我希望这段代码打印出来,而不是True
False
答:
5赞
Eric Postpischil
3/7/2023
#1
0.1
是一个常数。在 中,该值隐式转换为 。和 类型具有不同的精度,因此转换会产生较小的舍入误差。因此,存储在 中的值不等于 的值。double
float f = 0.1;
double
float
float
double
float
f
double
0.1
如果在出现的两个位置都更改为“True”,程序将打印“True”。0.1
0.1f
评论
0赞
محمود خالد
3/7/2023
非常感谢您的有用回答。但是,你能向我解释一下背后的语义吗?0.1f
评论
double
float
0.1
float
double
double
0.1
float
float
0.1
0.100000001490116119384765625
double
0.1000000000000000055511151231257827021181583404541015625