浮点数精度问题

上传人:kms****20 文档编号:37972550 上传时间:2018-04-25 格式:DOC 页数:1 大小:25.50KB
返回 下载 相关 举报
浮点数精度问题_第1页
第1页 / 共1页
亲,该文档总共1页,全部预览完了,如果喜欢就下载吧!
资源描述

《浮点数精度问题》由会员分享,可在线阅读,更多相关《浮点数精度问题(1页珍藏版)》请在金锄头文库上搜索。

1、浮点数精度问题浮点数精度问题 一、浮点数的概念及误差问题:浮点数是用来表示实数的一种方法,它用 M(尾数) * B( 基数)的 E(指数)次方来表示实数,相对于定点数来说,在长度一定的情况下,具有表示数据范围大的特点。但同时也存在误差问题,这就是著名的浮点数精度问题!浮点数有多种实现方法,计算机中浮点数的实现大都遵从 IEEE754 标准,IEEE754 规定了单精度浮点数和双精度浮点数两种规格,单精度浮点数用 4 字节(32bit)表示浮点数,格式是:1 位符号位 8 位表示指数 23 位表示尾数双精度浮点数 8 字节(64bit)表示实数,格式是:1 位符号位 11 位表示指数 52 位表

2、示尾数同时,IEEE754 标准还对尾数的格式做了规范:d.dddddd.,小数点左面只有 1 位且不能为零,计算机内部是二进制,因此,尾数小数点左面部分总是 1。显然,这个 1 可以省去,以提高尾数的精度。由上可知,单精度浮点数的尾数是用 24bit 表示的,双精度浮点数的尾数是用 53bit 表示的,转换成十进制:224 - 1 = 16777215 253 - 1 = 9007199254740991由上可见,IEEE754 单精度浮点数的有效数字二进制是 24 位,按十进制来说,是 8 位;双精度浮点数的有效数字二进制是 53 位,按十进制来说,是 16 位。显然,如果一个实数的有效数

3、字超过 8 位,用单精度浮点数来表示的话,就会产生误差!同样,如果一个实数的有效数字超过 16 位,用双精度浮点数来表示,也会产生误差!对于 1310720000000000000000.66 这个数,有效数字是 24 位,用单精度或双精度浮点数表示都会产生误差,只是程度不同:单精度浮点数: 1310720040000000000000.00双精度浮点数: 1310720000000000000000.00双精度差了 0.66 ,单精度差了近 4 万亿!采用 IEEE754 标准的计算机浮点数,在内部是用二进制表示的,但在将一个十进制数转换为二进制浮点数时,也会造成误差,原因是不是所有的数都能转换成有限长度的二进制数。对于 131072.32 这个数,其有效数字是 8 位,按理应该能用单精度浮点数准确表示,为什么会出现偏差呢?看一下这个数据二进制尾数就明白了10000000000000000001010001.显然,其尾数超过了 24bit,根据舍入规则,尾数只取 100000000000000000010100,结果就变成单精度浮点数表示 131072.312500,只有前 8 位才是有效的。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号