C中实数的范围
学习C的过程中,发现书上(以TC为例)对于实数类型(单精度float、双精度double)数据的取值范围说得比较含糊,因此在网上查询,结果主要有以下几种:
1、float 字长为4个字节float型,数的范围是 3.4E-38~3.4E+38。
double字长为8个字节,数的范围是 1.7E-308~1.7E+308。
double字长为8个字节,数的范围是 1.7E-308~1.7E+308。
2、float在内存中占用4个字节,约7个十进位有效数字,能表示绝对值最接近0的实数约为10
的-38次方,最大的实数约为10的38次方。
double占用8个字节,约15个十进位有效数字,能表示绝对值最接近0的实数约为10的
-308次方,最大的实数约为10的308次方。
的-38次方,最大的实数约为10的38次方。
double占用8个字节,约15个十进位有效数字,能表示绝对值最接近0的实数约为10的
-308次方,最大的实数约为10的308次方。
3、float型,数的范围±(3.4E-38~3.4E+38),六位精度
double型,数的范围±(1.7E-308~1.7E+308),十六位精度。
其他的也类似,分析一下,第1种显然有问题,没有考虑负数;第2种没有精确说明;第3种
范围说得较明白,但精度似乎与大多数结果有些出入。另外以上3种也有共同点,比如字节数、范围的数字等,综合多种查询结果(多种版本的书),我觉得比较合理的结果是这样的:
float型,4字节,范围-(3.4E-38~3.4E+38)∪+(3.4E-38~3.4E+38),7位精度
double型,8字节,范围-(1.7E-308~1.7E+308)∪+(1.7E-308~1.7E+308),15位精度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论