%f输出精度问题
float f1 = 3.1415926f;
printf("f1 = %f\n",f1);-->3.1415923//默认输出小数点后6位
printf("f1=%.7f\n",f1);-->3.1415925//注意,%f打印出来后,精度小数点后6位,有效数字是7位所以这边的5就是无效数字。
所以使用floalt是打不出小数点后的第七位的。也就是有效数字后的数字是无效的
float a = 1111.111111;
foat b = 2222.22222;
printf("a + b= %f\n", a+b); -->有效位数之后的数字(7位)都是无效的。
解决方案
要打印更大精度的就只有使用double类型
double默认的是精度小数点后7位,有效数字是15位。
dobule d1 = 3.1415926;
printf("d1 = %.7f\n",d1); |
|