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
添加回答
举报
0/150
提交
取消