你b输入的时候应该是%lf,导致输出有偏差,注意下细节就好了
而且你不同类型的精度比较会导致不一定相等
#include <stdio.h>
int main()
{
float a;
double b;
scanf("%f%lf", &a, &b);
printf("%f,%lf",a,b);
if(fabs(a-b)<1e-4)
printf("相等");
else
printf("不相等");
}
因为你是用%f扫描到double里面,然后又按照%lf输出,所以会产生偏差
此外,double和float本身的精度也不同
永远不要使用
==
判读浮点数
此处因为 a 是单精度浮点数,b 是双精度浮点数,计算机储存浮点数时使用的是近似值 (0.1 + 0.2 = 0.30000001) ,所以 a 和 b 有一定概率不相等
害,这种我也遇到过,double当你输入5时,他里面保存的可能是5.000000001