使用以下代码,
#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
为什么输出有差异?
最佳答案
您应该明白,在 C 中,文字 3.3 的类型为 double。将 double 转换为 float 可能会丢失精度,因此 3.3F 与 3.3 的比较结果为 false。对于 3.5,转换是无损的,因为两者都可以准确表示并且比较结果为真。
它与(以 10 为基数而不是以 2 为基数)比较有关
3.3333333 with 3.3333333333333333 (false)
3.5000000 with 3.5000000000000000 (true)
关于c - float 相等性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18142348/