IEEE 754四种舍入方向

转载 2015年11月17日 15:44:48
四种舍入方向: 
向最接近的可表示的值;当有两个最接近的可表示的值时首选“偶数”值;向负无穷大(向下);向正无穷大(向上)以及向0(截断)。 
说明:舍入模式也是比较容易引起误解的地方之一。我们最熟悉的是四舍五入模式,但是,IEEE 754标准根本不支持,它的默认模式是最近舍入(Round to Nearest),它与四舍五入只有一点不同,对.5的舍入上,采用取偶数的方式。举例比较如下: 例2: 
最近舍入模式:Round(0.5) = 0; Round(1.5) = 2; Round(2.5) = 2; 四舍五入模式:Round(0.5) = 1; Round(1.5) = 2; Round(2.5) = 3; 
主要理由:由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。在两个可以精确表示的相邻浮点数之间,必定存在无穷多实数是IEEE浮点数所无法精确表示的。如何用浮点数表示这些数,IEEE 754的方法是用距离该实数最近的浮点数来近似表示。但是,对于.5,它到0和1的距离是一样近,偏向谁都不合适,四舍五入模式取1,虽然银行在计算利息时,愿意多给0.5分钱,但是,它并不合理。例如:如果在求和计算中使用四舍五入,一直算下去,误差有可能越来越大。机会均等才公平,也就是向上和向下各占一半才合理,在大量计算中,从统计角度来看,高一位分别是偶数和奇数的概率正好是50% : 50%。至于为什么取偶数而不是奇数,大师Knuth有一个例子说明偶数更好,于是一锤定音。最近舍入模式在C/C++中没有相应的函数,当然,IEEE754以及x86 FPU的默认舍入模式是最近舍入,也就是每次浮点计算结果都采用最近舍入模式,除非用程序显式设置为其它三种舍入模式。 另外三种舍入模式,简要说明。 

向0(截断)舍入:C/C++的类型转换。(int) 1.324 = 1,(int) -1.324 = -1; 

向负无穷大(向下)舍入:C/C++函数floor()。例如:floor(1.324) = 1,floor(-1.324) = -2。 

向正无穷大(向上)舍入:C/C++函数ceil()。ceil(1.324) = 2。Ceil(-1.324) = -1; 

后两种舍入方法据说是为了数值计算中的区间算法,但很少听说哪个商业软件使用区间算法。


IEEE 754 浮点数的四种舍入方式

四种舍入方向: 向最接近的可表示的值;当有两个最接近的可表示的值时首选“偶数”值;向负无穷大(向下);向正无穷大(向上)以及向0(截断)。 说明:舍入模式也是比较容易引起误解的地方之一。我们最...
  • zhzz2012
  • zhzz2012
  • 2014年08月14日 19:42
  • 1107

IEEE-754标准

历史 IEEE-754标准的主要起草者是来自UCB的数学教授William Kahan.。他帮助Intel设计完成了8087浮点运算单元(FPU)。由于设计的浮点标准是如此的出色,使得IEEE将此...
  • wallc
  • wallc
  • 2017年05月24日 11:22
  • 183

Java与IEEE754浅浅谈

怎么用二进制来表示小数呢?        假设我们要用二进制来表示小数5.5,怎么搞?               按照常规思路,首先用二进制表示一下5,是101,那5.5岂不就是101.10...
  • u011679955
  • u011679955
  • 2016年10月07日 17:00
  • 762

IEEE754 C 语言代码

void ConvertDexToIEE754(float fpointer,unsigned char *a)  //十进制转化为 IEEE745 小数 {        int Flag=0;...
  • zimiao815
  • zimiao815
  • 2016年06月02日 08:28
  • 800

二进制浮点数算术标准 IEEE 754

IEEE 754 维基百科,自由的百科全书 IEEE二进制浮点数算术标准(IEEE 754)是1980年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算...
  • hurtmanzc
  • hurtmanzc
  • 2013年03月14日 10:10
  • 3542

IEEE754浮点数的表示方法

1.浮点数的存储格式浮点数在C/C++中对应float和double类型,我们有必要知道浮点数在计算机中实际存储的内容。IEEE754标准中规定float单精度浮点数在机器中表示用 1 位表示数字的符...
  • K346K346
  • K346K346
  • 2016年01月09日 17:08
  • 19043

js浮点运算精度问题和IEEE754

原文链接当我们使用一段时间的JS之后会遇到下面这个问题 0.1 + 0.2 === 0.3 // false我们可以在控制台里面看到0.1+0.2输出的并不是0.3而是0.3000000000000...
  • u012362458
  • u012362458
  • 2017年09月07日 17:17
  • 222

PHP IEEE 754 精度错误

运行如下代码 $t = 39.800 * 100; echo $t.''; echo intval($t); 结果: 3980 3979 文档解释 http://php.net...
  • jam00
  • jam00
  • 2016年05月13日 17:56
  • 828

IEEE 754-1985 浮点数标准文档

对浮点数的理解对计算误差和可能的程序效率的低下的理解很有帮助 IEEE 754-1985 was an industry standard for representing floati...
  • wangeen
  • wangeen
  • 2013年03月08日 18:32
  • 1773

学习IEEE754标准需要注意的几个问题

1、什么是IEEE754标准用来规范化浮点数,其格式是(1)32位x=(-1)s×(1.M)×2E-127     e=E-127(2)64位x=(-1)s×(1.M)×2E-1023    e=E-...
  • hongdi
  • hongdi
  • 2010年03月17日 22:47
  • 11573
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IEEE 754四种舍入方向
举报原因:
原因补充:

(最多只允许输入30个字)