IEEE754浮点数的表示精度探讨

IEEE754浮点数的表示精度探讨

ID:43032957

大小:113.50 KB

页数:6页

时间:2019-09-23

IEEE754浮点数的表示精度探讨_第1页
IEEE754浮点数的表示精度探讨_第2页
IEEE754浮点数的表示精度探讨_第3页
IEEE754浮点数的表示精度探讨_第4页
IEEE754浮点数的表示精度探讨_第5页
资源描述:

《IEEE754浮点数的表示精度探讨》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、IEEE754浮点数的表示精度探讨前吕从网上看到不少程序员对浮点数精度问题有很多疑问,在论坛上发贴询问,很多热心人给予了解答,但我发现一些解答中有些许小的错误和认识不当之处。我曾经做过数值算法程序,虽然基本可用,但是被浮点数精度问题所困扰;事情过后,我花了一点时间搜集资料,并仔细研究,有些心得体会,愿意与大家分亨,希望对IEEE754标准屮的二进制浮点数耕度及其相关问题给予较为详尽的解释。当然,文中任何错误由本人造成,由我承担,特此声明。1、什么是IEEE754标准?目前支持二进制浮点数的硬件和软件文档中,

2、几乎都声称其浮点数实现符合IEEE754标准。那么,什么是IEEE754标准?最权威的解释是IEEE754标准本身ANSI/IEEEStd754-1985《IEEEStandardforBinaryFloating-PointArithmetic》,网上有PDF格式的文件,Google—下,下载即可。标准文本是英文的,总共才23页,有耐心的话可以仔细阅读。这里摘录前言中的一句:Thisstandarddefinesafamilyofcommerciallyfea引blewaysfornewsystemsto

3、performbinaryfloating・pointarithmetiCc其实是句废话,什么也没说。IEEE754标准的主要起草者是加州大学伯克利分校数学系教授WilliamKahan,他帮助Intel公司设计了8087浮点处理器(FPU),并以此为基础形成了IEEE754标准,Kahan教授也因此获得了1987年的图灵奖。赞一句:IEEE754浮点格式确实是天才的设计。Kahan教授的主页:ht±D:〃www・cs・berkelev.edu/~wkahan/。看看其它文献怎么说。2、IEEE754标准规

4、定了什么?以下内容来自Sun公司的《NumericalComputationGuide—SunStudio11》的中文版《数值计算指南》,并加上本人的一点说明。说实话,该中文指南翻译得不太好,例如,round译成''四舍五入〃。IEEE754规定:a)两种基本浮点格式:单精度和双精度。IEEE单精度格式具有24位有效数字,并总共占用32位。IEEE双精度格式具有53位有效数字精度,并总共占用64位。说明:基本浮点格式是固定格式,相对应的十进制有效数字分别为7位和17位。基本浮点格式对应的C/C++类型为fl

5、oat和double0b)两种扩展浮点格式:单精度扩展和双精度扩展。此标准并未规定扩展格式的精度和大小,但它指定了最小精度和大小。例如,IEEE双精度扩展格式必须至少具有64位有效数字,并总共占用至少79位。说明:虽然IEEE754标准没有规定具体格式,但是实现者可以选择符合该规定的格式,一旦实现,则为固定格式。例如:x86FPU是80位扩展粘:度,而Intel安腾FPU是82位扩展精度,都符合IEEE754标准的规定。C/C++对于扩展双精度的相应类型是longdouble,但是,MicrosoftVis

6、ualC++6.0版本以上的编译器都不支持该类型,longdouble和double—样,都是64位基本双精度,只能用其它C/C++编译器或汇编语言。c)浮点运算的准确度要求:力口、减、乘、除、平方根、余数、将浮点格式的数舍入为整数值、在不同浮点格式之间转换、在浮点和整数格式之间转换以及比较。求余和比较运算必须粘确无误。其他的每种运算必须向其目标提供精确的结果,除非没有此类结果,或者该结果不满足口标格式。对于后一种情况,运算必须按照下面介绍的规定舍入模式的规则对精确结果进行最低限度的修改,并将经过此类修改的

7、结果提供给运算的冃标。说明:IEEE754没有规定基本算术运算(+、一、X、/等)的结果必须精确无误,因为对于IEEE754的二进制浮点数格式,山于浮点格式长度固定,基本运算的结果几乎不可能精确无误。这里用三位精度的十进制加法来说明:例1:a=3.51,b=0.234,求a+b=?a与b都是三位有效数字,但是,a+b的精确结果为3.744,是四位有效数字,对于该浮点格式只有三位精度,a+b的结果无法精确表示,只能近似表示,具体运算结果取决于舍入模式(见舍入模式的说明)。同理,由于浮点格式固定,对于其他基本运

8、算,结果也几乎无法精确表示。d)在十进制字符串和两种基本浮点格式之一的二进制浮点数之间进行转换的准确度、单一性和一致性要求。对于在指定范围内的操作数,这些转换必须生成精确的结果(如果可能的话),或者按照规定舍入模式的规则,対此类精确结果进行最低限度的修改。対于不在指定范围内的操作数,这些转换生成的结果与精确结果之间的茅值不得超过取决于舍入模式的指定误茅。说明:这一条规定是针对十进制字符串表示的数据与二进制浮点数之

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。