python中小浮点数加1为什么等于1

本文探讨了Python中浮点数精度问题,由于IEEE 754标准,浮点数的有效数字存储有限,导致在某些情况下3/x+1可能等于1。当大数的二进制最后一个1比小数的二进制第一个1高52位时,小数部分将因精度不足被忽略,从而出现等值现象。
摘要由CSDN通过智能技术生成

计算机导论作业题

x = 9876543210987654321
print(3/x == 0)        Flase
print(3/x+1 == 1)      True
x = 9876543210  
print(3/x + 1 == 1)    Flase

原因解释

  • 在 Python 使用的 IEEE 754 标准(52M/11E/1S)中,8字节64位存储空间分配了52位来存储浮点数的有效数字,11位存储指数,1位存储正负号。
  • 可以看到当 x = 9876543210987654321 x = 9876543210987654321 x=9876543210987654321时, 3 / x 3/x 3/x并不等于0,这是因为浮点数的精度指的是从第一个不为0的数开始之后的位数,假设 3 / x 3/x 3/x化为二进制之后是 0.000000000000000000000000000000000000000000000000101010101010101 0.000000000000000000000000000000000000000000000000101010101010101 0.000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值