【发布时间】:2016-05-06 02:39:14
【问题描述】:
我在 mysql 中将价格存储为小数(8,2),我需要将相等性与 python 中的浮点数进行比较。
假设我在数据库中有4.28,select 返回price = (Decimal(4.28),)。我通过decimal.Decimal(price[0])将其转换为python十进制,但decimal.Decimal(price[0]) == 4.28返回false。
有没有办法直接比较相等而不是用一个小数比较差异,即
decimal.Decimal(price[0]) - decimal.Decimal(4.28) < 0.01
谢谢
【问题讨论】:
-
price[0]已经是十进制。你为什么要像decimal.Decimal(price[0])一样再次将其转换为十进制?因为decimal.Decimal(decimal.Decimal(4.28))在我的笔记本电脑中返回了Decimal('4.28000000000000024868995751603506505489349365234375')。 -
@ozgur
price[0]是从数据库返回的值(使用 mysqldb),它不是 Python 十进制,字面意思是Decimal(4.28)
标签: python mysql compare decimal