Har*_*son 1 python mysql compare decimal
我在 mysql 中将价格存储为十进制(8,2),我需要将相等性与 python 中的浮点数进行比较。
假设我4.28在数据库中有并select返回price = (Decimal(4.28),)。我将其转换为 python 十进制 by decimal.Decimal(price[0]),但decimal.Decimal(price[0]) == 4.28返回 false。
除了比较小数的差异之外,有没有办法直接比较相等,即
decimal.Decimal(price[0]) - decimal.Decimal(4.28) < 0.01
谢谢
不,没有其他方法可以比较数字的浮点表示形式是否相等,但有一些方法可以使其实用:
decimal.Decimal(price[0]) - decimal.Decimal(4.28) < 0.01
Run Code Online (Sandbox Code Playgroud)
确实应该是:
abs(decimal.Decimal(price[0]) - decimal.Decimal(4.28)) < 0.01
Run Code Online (Sandbox Code Playgroud)
您可以抽象比较:
def almost_equal(a, b, epsilon=1e-5):
"""returns true is the absolute value of the difference between a & b
is less than epsilon i/e a & b are almost equal, False otherwise
"""
return abs(a - b) < epsilon
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2201 次 |
| 最近记录: |