[英]How to compare a Python float with a Mysql decimal in python?
我在mysql中將價格存儲為小數(8,2),我需要將相等與python中的浮點數進行比較。
假設我的數據庫中有4.28
,然后select
return 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
謝謝
不,沒有其他方法可以比較數字的浮點表示形式是否相等,但是有一些方法可以使其實用:
decimal.Decimal(price[0]) - decimal.Decimal(4.28) < 0.01
確實應該是:
abs(decimal.Decimal(price[0]) - decimal.Decimal(4.28)) < 0.01
您可以抽象比較:
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
您需要將要比較的內容轉換為小數:
decimal.Decimal('4.28') == decimal.Decimal(price[0])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.