读书人

基础有关问题问了几个人都没搭上来

发布时间: 2012-03-12 12:45:33 作者: rapoo

基础问题,问了几个人,都没搭上来
郁闷

C/C++ code
1.0101111 x 2的-129次方 ,存到单精度中, 单精度的指数最小是-126, 无法存储就会溢出书上说, 此时会溢出,那么就会通过向左 移动小数点每次一位,使其正规化,知道指数落在有效的范围内最后结果为:0.0010 1011 11 x 2的-126次方此时书上又说了句话,造成精度损失。

问题:0.0010 1011 11 x 2的-126次方 ,-126已经落在了 -126-127的范围内 之后,为什么会精度损失。。

在计算机中存储的 浮点数又是多少呢???


问题2:

负数取值范围为 -3.4028235E+38 到 -1.401298E-45,正数取值范围为 1.401298E-45 到 3.4028235E+38。
双精度数取值范围:

尽管 -3.4028235E+38 非常小,可能接近0,但是0还是没有在单精度范围内啊??

怎么回事呢?



[解决办法]
探讨
正规化后 0.0010 1011 11 x 2的-126次方 ,-126已经落在了 -126-127的范围内 之后,为什么会精度损失。。




引用:

1
float是 指数8位, 小数部分23位。
double 指数11位,小数52 位

2
-3.4028235E+38 跟0 离得很远啊。

读书人网 >C语言

热点推荐