c语言中float型的精度问题

2024-11-23 03:29:52
推荐回答(3个)
回答1:

取值范围 3.4*10^38
有效数字只有 7 到 8 个。
例如:
float a=123.456789;
float b=123456789.0;
printf("%20.8f\n",a);
printf("%20.8f",b);
打出:
123.45678711 -- 后3位不精确
123456792.00000000 -- 前7位精确,92 开始不对了。

回答2:

3.4*10^38是说他可以达到的上限是这么多。谁说精度是38,float精度是小数点后6-7位

补充:嗯我错了,应该是有效数字不是小数点后

回答3:

只是范围,而不是一定要小数点后38位
float的精度在编程中是可以控制的例如 printf("%0.2f",x);
输出X的值,并保留小数点后2位。
当然,也可以是n位