【Python】浮点数精度问题与解决

a = 1.1
b = 2.2
r1 = b-a
print(r1)

import decimal
decimal.getcontext().prec = 2
a = decimal.Decimal('1.1')
b = decimal.Decimal('2.2')
r2 = b-a
print(r2)

a = float(a)
b = float(b)
r3 = b-a
print(r3)

print(r1==r2,r1==r3,r2==r3)
decimal.getcontext().prec = 2
print(decimal.Decimal(r3) == r2)
print(float(r2) == r3)

如果你以为r1、r2、r3、r4都是1.1就大错特错啦~
在这里插入图片描述

结果1:r1 != r2
结果2:r1 == r3
结果3:r2 != r3
结果4:decimal.Decimal(r3) != r2
结果5:float(r2) == r3

考虑不同情况,可以选择:①使用decimal库②使用round或者format修改float数精度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值