为什么这里输出的a 小数点后面有1?

img


为什么这里输出的a 小数点后面有1?
为什么输出的b变量和c变量就没有那个1?
有没有人能帮我康康

浮点数在存储的时候 是近似值
所以 在打印的时候多一点 少一点 都是正常的
于是 在编程的时候,一般不会用%f 而是取一定位数,比如 %.3f 保留三位小数。
如果你要要求前六位都是完全精确的值,那么可以使用double
注意 输出的时候用%lf
望采纳!

float 精度不够吧,虽然float的最小数据分辨率(1/2)^24=0.000 000 059 604 644 775 390 625,但是不同编译器下float精度不同。

其实浮点数都会存在一点误差的,不过由于 double 和 long double 比 float 的精度要高,而默认又显示6位的情况下,后面的误差就显示不出来了
下面演示一下输出小数点后15位

img

#include<stdio.h>

int main(){
    double a = 123.456;
    float b = 123.456;
    long double c = 123.456;
    printf("%.15f\n",a);
    printf("%.15f\n", b);
    printf("%.15f", c);
}