#include <stdio.h>
int main(void){
float a = 1.1;
double b = 1.1;
if(a == b){
printf("if block");
}
else{
printf("else block");
}
return 0;
}
打印:else 块
#include <stdio.h>
int main(void){
float a = 1.5;
double b = 1.5;
if(a == b){
printf("if block");
}
else{
printf("else block");
}
return 0;
}
打印: if 块
这背后的逻辑是什么?
使用的编译器:gcc-4.3.4
这是因为1.1
不能完全用二进制浮点数表示。但1.5
is.
结果,float
and double
表示将持有略有不同的值1.1
.
这正是写为二进制浮点数时的区别:
(float) 1.1 = (0.00011001100110011001101)₂
(double)1.1 = (0.0001100110011001100110011001100110011001100110011010)₂
因此,当你比较它们时(以及float
版本升级),它们不会相等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)