关于c++使用float和double导致结果差异很大的问题

img

img


#include<stdio.h>

int main() 
{
    printf("请输入三个小数\n");
    double a, b, c, d;
    scanf_s("%f,%f,%f",&a,&b,&c);

    d = a * 2 + b * 3 + c / (a + 2) - 10;
    printf("%f\n",d);
    return 0;

}
#include<stdio.h>

int main() 
{
    printf("请输入三个小数\n");
    float a, b, c, d;
    scanf_s("%f,%f,%f",&a,&b,&c);

    d = a * 2 + b * 3 + c / (a + 2) - 10;
    printf("%f\n",d);
    return 0;

}

double用%lf

#include<stdio.h>
int main()
{
    printf("请输入三个小数\n");
    double a, b, c, d;
    scanf_s("%lf,%lf,%lf", &a, &b, &c);
    d = a * 2 + b * 3 + c / (a + 2) - 10;
    printf("%lf\n", d);
    return 0;
}