为什么精度会丢失?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

给你举个例子:

有符号 8 位整型 (-128 到 127)。

整数的精度是准确的,因为每一位都用的恰到好处。

如果你想存储更大的数字,增加存储的位数就好了,有符号 16 位整型 (-32768 到 32767)。


但是浮点数就不同了,浮点数是无限的,你只能尽可能接近的存储一个浮点数,在整数 1 和 3之间只有2,但是 0.1 和 0.3 之间还有无数个浮点数!


精度丢失是因为在存储过程中,十进制都是转换为二进制存储的,但是浮点数的二进制并不能表达出无限个,所以必然存在精度丢失。

按照IEEE 754规定(大多数语言都是按照这个规定设计浮点数的),对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。

同上,23位无法表示所有有效的浮点数,所以必然存在精度丢失。

好帮手慕笑蓉 2020-06-21 11:49:31

同学,你好。浮点数在表示数字时并不是很精确,是有误差的,因为把一个十进制的小数转换成浮点数如:一个二进制位表示0.5,两个则表示0.5+0.25=0.75,只能无限去接近一个数,无法精确表示一个数据;因此进度会丢失。

如果解决了你的疑惑,请采纳,祝学习愉快~ 

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师