【发布时间】:2013-08-09 07:56:13
【问题描述】:
使用以下代码,
#include <stdio.h>
int main(void){
float x;
x=(float)3.3==3.3;
printf("%f",x);
return 0;
}
输出为 0.00000
但是当数字3.3换成3.5时,
#include <stdio.h>
int main(void){
float x;
x=(float)3.5==3.5;
printf("%f",x);
return 0;
}
输出为 1.0000
为什么输出会有差异?
【问题讨论】:
-
为什么要将相等运算的布尔结果存储为浮点数?
-
第三,了解
float和double之间的区别,无论是在一般情况下还是在涉及文字时。 -
我第二次推荐 @JoachimPileborg 的 Goldberg 文章(也可在 PDF 中找到),并将推荐 Bruce Dawson 的博客条目 "Comparing Floating Point Numbers, 2012 Edition"。
标签: c floating-point