浮点数舍入相比向整数舍入,就复杂一些,IEEE定义了四种不同的舍入方式,默认的为向偶数舍入(round-to-even)。其他三个分别是向零舍入,向上舍入和向下舍入。
其他三个比较直观,就不再说明,以十进制为例说明“向偶数舍入”,平常的四舍五入中,以舍入到小数点后两位为例,如果第3位小数小于5,则舍去,大于等于5的则进1。向偶数舍入除了最中间的这个值(第3位小数为5)以外,其他与平常的舍入相同,中间的这个值,则要保证在舍入的时候舍入位必须为偶数。比如1.40, 1.60, 1.50, 2.50, -1.50向偶数舍入的结果分别为1, 2, 2, 2, -2
至于为什么要想偶数舍入,这是CSAPP(2e)中的原文:
- The problem with such a convention is that one can easily imagine scenarios
- in which rounding a set of data values would then introduce a statistical bias
- into the computation of an average of the values. The average of a set of numbers
- that we rounded by this means would be slightly higher than the average of
- the numbers themselves. Conversely, if we always rounded numbers halfway
- between downward, the average of a set of rounded numbers would be
- slightly lower than the average of the numbers themselves. Rounding toward
- even numbers avoids this statistical bias in most real-life situations.
- It will round upward about 50% of the time and round downward about 50% of the time.
也就是如果在一组数据中,向偶数舍入一般既有向上舍入也有向下舍入,可以一定程度上消除统计平均数时由于总是向上舍入时所带来的统计偏差。
扩展成二进制,就是对形如 XX···X.YY···Y100···二进制模式位的数(最右边的Y是要舍入的位置),根据舍入位是否为偶数来选择是向上舍入还是向下舍入。(至于为什么是100,我还没想明白)
比如10.010, 10.011, 10.110, 11.001向偶数舍入(保留小数点后一位)的结果分别为10.0, 10.1, 11.0, 11.0。
相关推荐
IEEE浮点数工具.rar IEEE浮点数工具,帮助计算IEEE浮点数
将任何数据类型的转换为IEEE标准的二进制码或十六进制码,使用方便,功能强大
全面介绍了IEEE浮点数标准协议,对于需要做浮点数处理的很有帮助。
二进制浮点数舍入问题解决
自己用Qt5.4.1的Qt Creator开发的IEEE754浮点数与十六进制数转换器,可以供Qt初学者学习槽函数的用法,也可以学习IEEE754浮点数与十六进制数转换的算法。两个文本框关联,实时将浮点数与十六进制数互相转换,代码...
IEEE754浮点数乘法设计,针对IEEE754标准,使用C语言对IEEE754浮点数表示和乘法计算过程进行了还原,编译器和IDE分别为GC++和DEV c++。
DELPHI最完美的四舍五入无BUG函数,是我花费了2天研究出来的成果,完美保留1-4个小数点,包内提供有EXCEL表取值可以把计算结果复制出来做结果对比,我已经随机取了十几万记录做对比,居然无一值和EXCEL的函数保留有...
本文档简介了TMS320C3x浮点数简介、IEEE754的32位转VC33的32位浮点数算法、IEEE754的64位浮点数转VC33的40位浮点数算法;给相关TI的DSP开发工程师提供开发参考。
IEEE754 浮点数计算器 。。。。。。。。。。。。。。。。。。。。。。。
c# IEEE754浮点数转换,已通过测试。实现浮点数与整型字节的相互转换,用于MODBUS协议的开发。
例如,浮点数50.0,在通信中传送的是它的IEEE-754格式,即4字节的十六进制424800H.因此,单片机的C程序,在发送或接收外围设各的参数值时,需要解决如何实现浮点数与IEEE格式转换的问题。 2.IEEE浮点数的格式 在...
IEEE浮点数计算机内二进制表示显示.viIEEE浮点数计算机内二进制表示显示.viIEEE浮点数计算机内二进制表示显示.vi
32位浮点数转换十六进制数,一个四字节十六进制数可按四种顺序转换成32位浮点数,方便串口通讯时的数据正误预判。
Modbus IEEE754 浮点数 转换 方法 VB 代码 使用VB6把MODBUS协议中的32位整数,变换为浮点数 MODBUS协议 数据 转换 IEEE754 Float Long
IEEE754浮点数详解.doc
IEEE574,IEEE4浮点数转换工具,内有CRC16,CHECKSUM,LRC检验计算工具软件(其中LRC是台达PLC中的方法)源码
labview IEEE754标准 32位浮点数转换
学习计算机组成原理时实现的IEEE754标准的浮点数的机器数转换器,只要填入十进制浮点数值,便可以求出单精度的IEEE754标准的机器数表示方法,反之,给出IEEE754的机器数,可以求出其对应的十进制浮点数值
根据IEEE754协议手动编程,源代码无加密,请放心下载 2012以上版本
IEEE754浮点数和十六进制数的相互转换,非常好。有利于初学者学习