浮点数的舍入处理

前言: 计算机在表示一个小数时,一般假定规格化前的数为 P+g 位,P时有效位字长,g是有效位字长之后的的代码长度.

比如说 0.xxxxx|010100 在这里,红的表示P, 绿的表示g,

1. 恒舍法

顾名思义,就是把绿的全部抛弃. 这样处理好处很显然,简单嘛,不管三七二十一,扔了就完了.但是问题也很突出,就是精度有问题.

这种方法误差是最大的,在精度有那么一丢丢要求的地发都会被嫌弃.

2.恒置法

这也顾名思义,就是吧红的最后一位置位1, 这实现起来倒也不难,那精度是不是也有问题呢?咋一看,是的,实际上,非也.

 

 从图中可以看出,误差的积累会互相抵消,除了绿色全为零的情况没人跟他相匹配之外.故而最后的误差只有2^-p,相当小的一个误差了.

3.下舍上入法:

这方法和恒指法不一样的地方,就在于红的部分全取了,但是要不要加,看绿色部分的最高位.如果绿的最高位是1,加,如果是0,那就扔了.这其实也不是特避难,但是麻烦,因为有个特殊情况,如果红色的全是1, 那再加上的最后一位的1,将会使整个数溢出,这时候要再往右规格化,挺麻烦的一件事.

而且吧,如果是0.XXXXX10000,也就是绿的是10000,那么这个东西没有人跟他抵消,产生积累误差.最后的积累误差结果就是2^(-p-1),

这么麻烦的结果,就是能使精度提高一位,误差达到2^(-p-1),比恒置法提高了一个量级.

4.R*舍入法

这个方法是为了改善前面0.XXXXX10000无人跟他匹配导致误差的的情况,方法不难,就是绿的部分是10000的时候,将红的使用恒置法恒置最后一位位1, 这在偶然这种就能是误差积累置为0,但是之后呢,如果算一个数就要判断好几回,这个运算代价是有点高呀,所以方法是好,但是除非对精度要求特别高,不然基本不用的.

5.查表法:

查表法就比较中庸了,他取红色部分的后几位和绿色的全部位数做判断,将各种判读方法存储在存储器中(基本上使用下舍上入的方法),针对不同的应用场景是的积累误差达到要求.

 

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值