C语言b的输入输出不一样

img

你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("不相等");
}

img

因为你是用%f扫描到double里面,然后又按照%lf输出,所以会产生偏差
此外,double和float本身的精度也不同

永远不要使用 == 判读浮点数

此处因为 a 是单精度浮点数,b 是双精度浮点数,计算机储存浮点数时使用的是近似值 (0.1 + 0.2 = 0.30000001) ,所以 a 和 b 有一定概率不相等

害,这种我也遇到过,double当你输入5时,他里面保存的可能是5.000000001