c语言,表2-7数值范围那,小括号里精确到6到7位什么意思,±3.4E±38不是很多位吗?,不懂!

2025-04-07 09:31:04
推荐回答(2个)
回答1:

先握个手,我也是看这个《C语言入门经典》学的C;


你可以把那句话理解成“有效数字6到7位”;意思就是从左到右6个数字是有效的,其他可能正确也可能是个随机值;


你可以做个试验把3333.3333333...(20个3)分别赋给3个类型(float,  double,   long double)的变量,再分别用他们的输出符号 %f  %lf  %Lf(long double好多编译器并不支持) 看看输出结果,你就明白了;


给你两张图,第一张是运行结果,第二张是调试的结果,我的编译器不支持long double,所以没有它的变量,不过你应该能看明白,再不明白就没办法了:


回答2:

这样能看明白不?

2 精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。

float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;

double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。