IEEE浮点数尾数向偶舍入-四舍六入五成双
IEEE浮点数舍入默认算法 可以用一句话来概括
四舍六入五成双
例如有效数字超出规定数位的多余数字是1001,它大于超出规定最低位的一半(即0.5),故最低位进1。如果多余数字是0111,它小于最低位的一半,则舍掉多余数字(截断尾数、截尾)即可。对于多余数字是1000、正好是最低位一半的特殊情况,最低位为0则舍掉多余位,最低位为1则进位1、使得最低位仍为0(偶数)。
注意这里说明的数位都是指二进制数。
举例:要求保留小数点后3位。
对于1.0011001,舍入处理后为1.010(去掉多余的4位,加0.001)
对于1.0010111,舍入处理后为1.001(去掉多余的4位)
对于1.0011000,舍入处理后为1.010(去掉多余的4位,加0.001,使得最低位为0)
对于1.1001001,舍入处理后为1.101(去掉多余的4位,加0.001)
对于1.1000111,舍入处理后为1.100(去掉多余的4位)
对于1.1001000,舍入处理后为1.100(去掉多余的4位,不加,因为最低位已经为0)
对于1.01011,舍入处理后为1.011(去掉多余的2位,加0.001)
对于1.01001,舍入处理后为1.010(去掉多余的2位)
对于1.01010,舍入处理后为1.010(去掉多余的2位,不加)
对于1.01111,舍入处理后为1.100(去掉多余的2位,加0.001)
对于1.01101,舍入处理后为1.011(去掉多余的2位)
对于1.01110,舍入处理后为1.100(去掉多余的2位,加0.001)
一、前言
最近在写一个基于IEEE754标准
的浮点加法器,其中有一项要求就是要满足IEEE754标准
的四种舍入模式。
我们在进行对阶或者右规格化的时候,阶数较小的操作数在进行右移的时候,会造成尾数部分的低位丢失,从而会造成误差。因此我们才需要根据需求,采取四种舍入模式中的一种对尾数进行舍入操作以减少误差。
二、IEEE754标准中的4种舍入模式
1、就近舍入:
即十进制下的四舍五入。但是也会出现以下几种情况:
- 多余数字是1001,它大于0.5,故最低位进1。
- 多余数字是0111,它小于0.5,则直接舍掉多余数字。
- 多余数字是1000,正好是等于0.5的特殊情况;那么此时最低位为0则舍掉多余位,最低位为1则进位1。
注意这里说明的数位都是指二进制数。因为这是尾数,所以在计算这些二进制和0.5的关系的时候,也即转为10进制的时候,我们用每一位的权重乘以2^(-i)
然后求和即可。
2、朝0舍入:即朝数轴零点方向舍入,所以我们直接截尾即可。
3、朝正无穷舍入:对正数而言,多余位全为0则直接截尾,不全为0则向最低有效位进1;负数的话不管多余位是多少直接截尾即可。
4、朝负无穷舍入:对负数而言,多余位全为0则直接截尾,不全为0则向最低有效位进1;正数的话不管多余位是多少直接截尾即可。
三、举例
要求保留小数点后3位
1、就近舍入:
对于1.001_1001,舍入处理后为1.010(去掉多余的4位,加0.001)
对于1.001_0111,舍入处理后为1.001(去掉多余的4位)
对于-1.001_1000,舍入处理后为-1.010(去掉多余的4位,加0.001,因为此时最低位为1)
对于-1.010_1000,舍入处理后为-1.010(直接去掉多余的4位,因为此时最低位为0)
2、朝0舍入:
//正数直接截尾
对于1.001_1001,舍入处理后为1.001(直接去掉多余的4位)
对于1.001_0111,舍入处理后为1.001(直接去掉多余的4位)
//负数直接截尾
对于-1.001_1000,舍入处理后为-1.001(直接去掉多余的4位)
对于-1.010_1000,舍入处理后为-1.010(直接去掉多余的4位)
3、朝正无穷舍入:
//正数多余位不全为0进位1
对于1.001_1001,舍入处理后为1.010(去掉多余的4位,加0.001)
对于1.001_0111,舍入处理后为1.010(去掉多余的4位,加0.001)
//正数多余位全为0直接截尾
对于1.001_0000,舍入处理后为1.001(直接去掉多余的4位)
//负数直接截尾
对于-1.001_1010,舍入处理后为-1.001(直接去掉多余的4位)
4、朝负无穷舍入:
//正数直接截尾
对于1.001_1001,舍入处理后为1.001(直接去掉多余的4位)
对于1.001_0111,舍入处理后为1.001(直接去掉多余的4位)
//负数多余位全为0直接截尾
对于-1.001_0000,舍入处理后为-1.001(直接去掉多余的4位)
//负数多余位不全为0进位1
对于-1.001_1010,舍入处理后为-1.010(去掉多余的4位,加0.001)
我觉得可能我的理解会有错误,知道的小伙伴可以交流一下!!!
参考链接: https://www.cnblogs.com/jva-index/p/13897423.html
IEEE浮点数尾数向偶舍入
IEEE浮点数舍入(四舍六入五成双)
IEEE754标准中的4种舍入模式
IEEE浮点数尾数向偶舍入-四舍六入五成双相关推荐
- 银行家舍入-四舍六入五成双
在js的计算中: 一个例子,比如说一件商品,它的含税单价是450,税率是3%,那么我们将它转为不含税单价.450/1.03=436.8932038834951 结果是17位,共13位小数.当然实际上, ...
- 四舍五入 与 四舍六入五成双
今天公司有个同事在调一个asp程序时候,发现 round(1.25,1) 返回的竟然是1.2 而不是1.3 查询了一下CSDN的帖子,发现这竟然是一个Bug: http://search.csdn.n ...
- C# 四舍五入 (解决四舍六入五成双的问题)
四舍六入五成双是一种精确度的计数保留法.舍入规律是"四舍六入五成双",这里"四"是小于五的意思,"六"是大于五的意思,"五&quo ...
- php 五舍六入,Golang浮点型的默认舍入规则——四舍六入五成双
四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则,又名银行家舍入法.它比通常用的四舍五入法更加精确. 具体规则: 被修约的数字小于5时,该数字舍去: 被修约的数字大于5时,则进位: ...
- sqlserver varchar 对于 sum 运算符无效_在sqlserver上实现自定义函数四舍六入五成双...
做过统计都知道关于保留几位小数有好几种方法,其中4舍6入5凑偶用的比较多,所以我就是sqlserver里面实现了一个自定义函数 定义 对于位数很多的近似数,当位数确定后,其后面多余的数字应该舍去,只保 ...
- java 四舍六入五成双_【数据小常识】“四舍六入五成双”
"四舍六入五成双"规则如下: "四舍六入五成双",也即"4舍6入5凑偶",这里"四"是指≤4 时舍去,"六&q ...
- 四舍六入c语言公式,【测绘专用】四舍六入五成双的C++实现
作为一名测绘专业的学生,在内业计算中经常遇到遇到小数点后保留几位小数的问题.根据<工程测量实验教程>(王宇会 著)一书,内业计算按"四舍六入,五前单进双舍(或称奇进偶不进)&qu ...
- “四舍六入五成双规则” 与 C语言如何实现“四舍五入”
1.四舍六入五成双规则 对于位数很多的近似数,当有效位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,这种修约(舍入)规则是"四舍六入五成双",也即"4舍6入 ...
- 关于“四舍六入五成双/四舍六入五留双/四舍六入五单双”等口诀的实例研究
关于"四舍六入五成双/四舍六入五留双/四舍六入五单双"等口诀的实例研究. 在网上有很多搜索结果,不过不容易理解清楚. 说来说去,还是来个实例比较容易理解. 先看一下微软的文档: h ...
最新文章
- 算法小论——第三章 又把新桃换旧符
- Mila唐建博士《图神经网络:算法与应用》研究进展
- 如何设计一个高可用、高并发秒杀系统
- rtmp测试地址_超详细搭建多码率测试环境(成为流媒体高手必经之路)
- qpython获取手机gps_基于Python获取照片的GPS位置信息
- python get score gain_Python functional.linear方法代码示例
- 程序员的《学习之道》
- 111 进程的创建和结束
- 解决QFontDatabase: Cannot find font directory XXX/lib/fonts
- U盘格式化后容量变小恢复方法
- 组成原理 - 网卡与HBA卡的区别
- 【转】傅里叶分析之掐死教程(完整版)
- 大数据BI解决方案:医疗行业的数据治理
- XPosed及插件安装(解决下载http://dl.xposed.info/repo/full.xml.gz时出错的问题)
- Mybatis+MySql中字段名为保留字(关键字)的情况
- 创维linux进入工厂模式,彩色电视机进入工厂模式后数据调乱了,如何恢复默认?-创维电视8TTN工厂模式数据怎么调...
- 你知道交换机配置的三种端口是什么吗?
- 【jieba获取关键词】
- JS 正则表达式否定匹配(正向前瞻)
- 无聊的农场 - vue小游戏