浮点数在存储的时候 是近似值
所以 在打印的时候多一点 少一点 都是正常的
于是 在编程的时候,一般不会用%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位
#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);
}