关于浮点数的的表数精度和有效位数:

表数精度也称表数误差。浮点数存在表数精度的根本原因是由于浮点数的不连续性造成的。我们知道,任何计算机的字长都是有限的,如果一台计算机的字长是32位,用一个字长表示一个浮点数,则这种表示方式最多能表示232个(大约43亿个)浮点数,这只是实数集中的很少一部分。因此当我们向计算机中输入一实数时,计算机只能用一个它可以表示的接近这个实数的浮点数来存放,这样在这个实数和浮点数之间就存在一个误差,这个误差的大小就称做表数精度。(有关表数精度的知识在《计算机系统结构》中详细描述,那是在大家读研之后的事了) 可以证明,规格化浮点数表数精度主要与尾数的基数和尾数的长度(二进制位数)有关。而现在计算机都采用二进制,所以尾数的基数都为2,因此可以只用尾数的长度(二进制位数)来表示精度。这也就是你所说的“单精度浮点数的实际有效精度为24位二进制”。 以上是从计算机系统设计人员的角度来分析的。 但从程序设计人员的角度来来看,若理解“用浮点数尾数的二进制位数表示浮点数的精度”有点太难,这就要求程序设计人员首先要了解浮点数的格式。因此为了降低程序设计人员的负担,在高级语言中,数据的精度一般用有效位数来表示,而不再提到其尾数的二进制位数。比如在C语言中,有float型和double型数据,我们只知道float型数据的有效位数为7位,double型数据的有效位数为15位,而对于这些数据在计算机中的表示并不需要我们了解。 有效位数指的是转化为十进制后十进制的有效位数。有效位数是指保证数值准确的位数,以后的位数就不保证准确了。 对于精度为24位的浮点数,因10000000=107<224=16777216<108,故它有7位有效数字。 也可以这样算:设224=10x,两边取自然对数,得x=24lg2=24*0.3010=7.2,故它有7位有效数字。 不同的程序设计语言所采用的浮点数格式是不同的。在Turbo C和MS C中采用的是符合国际标准IEEE 754的浮点数格式。(王爱英《计算机组成与结构》第三版71页) 对于单精度浮点数,精度为(尾数的位数)24位,合十进制有效位数7位; 对于双精度浮点数,精度为(尾数的位数)53位,合十进制有效位数15—16位(设253=10x,两边取自然对数,得x=53lg2=53*0.3010=15.953)。 总结:浮点数的精度用尾数的二进制位数来表示,位数越多,精度越高。有效位数是精度的另一表示方法,它指的是十进制的位数。 本文来源于Spirit's Home http://www.7788sky.cn/ , 原文地址:http://www.7788sky.cn/post/fudian_youxiaoshu.html
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值