c语言浮点舍入错误是什么意思,浮点/舍入误差的简单示例是什么?

c876f2382ead2c077f4958a410c588d3.png

慕慕森

通常,浮点错误是指无法存储在IEEE浮点表示中的数字。整数以最右边的位为1进行存储,而左边的每个位则为(2,4,8,...)的两倍。很容易看出,它可以存储任何最大为2 ^ n的整数,其中n是位数。浮点数的尾数(小数部分)以类似的方式存储,但从左到右移动,并且每个连续的位是前一个值的一半。(实际上比这要复杂一点,但现在可以了)。因此,像0.5(1/2)这样的数字很容易存储,但是并非每个数字<1都可以通过添加固定数量的1 / 2、1 / 4、1 / 8,...形式的分数来创建。一个非常简单的示例是0.1或1/10。可以用一个无穷大的序列来完成(我真的不能烦恼),但是每当一台计算机存储0.1时,存储的数字都不完全是。如果您可以访问Unix计算机,则很容易看到以下内容:Python 2.5.1 (r251:54863, Apr 15 2008, 22:57:26) [GCC 4.0.1 (Apple Inc. build 5465)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> 0.10.10000000000000001>>> 无论您使用哪种语言,都要对浮点数和双精度数进行相等性测试时要非常小心。(例如,0.2是不能存储在IEEE二进制中的那些讨厌的数字中的另一个,但是只要您正在测试不等式而不是等式(如p <= 0.2),那么您就可以了。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值