新浪博客

关于C语言中实数类型的取值范围

2006-03-07 15:42阅读:
 在学习C的过程中,发现书上(以TC为例)对于实数类型(单精度float、双精度double)数据的取值范围说得比较含糊,因此在网上查询,结果主要有以下几种:
1、float 字长为4个字节,数的范围是 3.4E-38~3.4E+38。
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次方。
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位精度。

我的更多文章

下载客户端阅读体验更佳

APP专享