C中实数的范围
学习C的过程中,发现书上(以TC为例)对于实数类型(单精度float、双精度double)数据的取值范围说得比较含糊,因此在网上查询,结果主要有以下几种:
1float 字长为4个字节float型,数的范围是 3.4E-38~3.4E+38 
   double字长为8个字节,数的范围是 1.7E-308~1.7E+308
2float在内存中占用4个字节,约7个十进位有效数字,能表示绝对值最接近0的实数约为10
  -38次方,最大的实数约为1038次方。 
  double占用8个字节,约15个十进位有效数字,能表示绝对值最接近0的实数约为10
  -308次方,最大的实数约为10308次方。
3float型,数的范围±(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小时内删除。