float变量如何存储c ++中不在其范围内的负值?

时间:2014-10-28 06:27:30

标签: c++ range

浮动值的范围是3.4e-38到3.4e + 38。因此浮点变量不应存储负值。但浮点变量存储负值。请解释一下。

#include<iostream.h>
void main()
{ float ab=-3.456;
cout<<ab; }

输出: -3.456

提前致谢。

3 个答案:

答案 0 :(得分:1)

单精度浮点数的范围是2 -126 ≈1.18×10 -38 至(2-2 -23 )×2 127 ≈3.4×10 38 为正值且相似但反向为负值:-3.4×10 38 至-1.18×10 -38 因为IEEE-754使用符号位格式,其中符号位单独存储

详细了解here

答案 1 :(得分:1)

这些是最大和最小的值。

  

在内部表示中,符号(S)有1位,8   指数(E)的位,以及分数(F)的23位。比特   用位0到位22的分数映射,位为指数   23到30位,以及位31的符号。

More

答案 2 :(得分:0)

基本上浮动包含三个数字

significant * base ^ exponent

重要部分和指数部分都可以有单独的符号。 所以实际浮动范围是:

float   32 bits -3.4E+38 to +3.4E+38    about 7 decimal digits

Floating point on wiki

IEEE standard