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(截断)。  说明:舍入模式也是比较容易引起误解的地方之一。我们最...

有效数字和数据舍入规则.ppt

  • 2011年05月15日 22:15
  • 452KB
  • 下载

无舍入逆向模糊形态学联想记忆

  • 2017年08月24日 15:48
  • 1.51MB
  • 下载

BigDecimal 舍入模式(Rounding mode)介绍

我们在使用Java大整数类时,有时根据实际需求需要对小数的舍入模式进行改变(默认为四舍五入方式)。下面对几种舍入模式进行介绍:*ROUND_CEILING* Rounding mode to roun...

常见舍入函数汇总

  • 2013年08月13日 12:47
  • 29KB
  • 下载

java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定

一、 计算机的小数计算一定范围内精确,超过范围只能取近似值: 计算机存储的浮点数受存储bit位数影响,只能保证一定范围内精准,超过bit范围的只能取近似值。 java中各类型的精度范围参...

LUA,C#中float型和double型的隐式舍入操作

 在学习LUA的过程中,发现了如下现象: 根据《魔兽世界脚本编程宝典的描述》对这一情况的描述,可以确定该状况的发生应该和浮点数本身采用的IEEE编码格式有关系; 那么这一现象应该...
  • SORGOTH
  • SORGOTH
  • 2016年09月30日 16:15
  • 251

Java大数类BigDecimal及八种舍入模式的介绍

关于BigDecimal的一点记录。

FPGA滤波器几种舍入方式和误差分析及verilog实现

在数字信号处理中,有限字长的舍入方式很重要

Java_语法基础_浮点数 最近舍入模式

例:package deep;public class RoundToNearest { public static void main(String[] args) { flo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IEEE 754四种舍入方向
举报原因:
原因补充:

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