为了账号安全,请及时绑定邮箱和手机立即绑定

求解:python中float的比较方式

求解:python中float的比较方式

倚天杖 2021-02-28 06:02:18
print float(lastpayment)-temp,'and',float(self.pyament)if (float(lastpayment)-temp) == float(self.pyament):print "success: "+self.pyament+" == "+tempStrelse:print "failed: "+self.pyament+" == "+tempStr代码如上。结果如下:1602.7 and 1602.7failed: 1602.7 == 4059.5+-37.7+-1565.0float(lastpayment)-temp和float(self.pyament)打印出来都是1602.7为什么不是相等的?是python对于float类型有别的比较方法吗?
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

python比较浮点数相等,由于存在精度的关系,要用math模块的isclose方法
两数相差小于1e-9的话,则认为两个浮点数相等。
math.isclose(a, b, rel_tol=1e-9)
>>> import math
>>> math.isclose(1.0, 1.0000000001)
True
精度可以修改:
>>> math.isclose(1.0, 1.0000000001, rel_tol=1e-10)
False

查看完整回答
反对 回复 2021-03-16
?
皈依舞

TA贡献1851条经验 获得超3个赞

浮点数不精确,如果想要使用精确小数,请用decimal
如果要比较浮点数a和b
-0.00000001 < a - b < 0.00000001这样比较

查看完整回答
反对 回复 2021-03-16
  • 2 回答
  • 0 关注
  • 273 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信