73.2413793103 ======= 73.2414
<type 'float'> ======= <class 'decimal.Decimal'>
當斷言這兩個值相等時,就出錯了
參考鏈接: https://www.cnblogs.com/xueweihan/p/5207959.html
解決方案:1 轉換為同一類型
浮點數轉為decimal(意思為十進制,python這個模塊提供了十進制浮點運算支持)
可以傳遞給Decimal整型或者字符串參數,但不能是浮點數據,因為浮點數據本身就不准確。
1) 浮點轉Decimal
from decimal import *
a=7.133333333
print type(a)====>float
b=Decimal.from_float(a)
print type(b)====>Decimal
a-b<0.00001 ======>True
簡介
decimal意思為十進制,這個模塊提供了十進制浮點運算支持。
常用方法
1.可以傳遞給Decimal整型或者字符串參數,但不能是浮點數據,因為浮點數據本身就不准確。
2.要從浮點數據轉換為Decimal類型
from decimal import * Decimal.from_float(12.222) # 結果為Decimal('12.2219999999999995310417943983338773250579833984375')
3.通過設定有效數字,限定結果樣式:
from decimal import * getcontext().prec = 6 Decimal(1)/Decimal(7) # 結果為Decimal('0.142857'),六個有效數字
4.四舍五入,保留幾位小數
from decimal import * Decimal('50.5679').quantize(Decimal('0.00')) # 結果為Decimal('50.57'),結果四舍五入保留了兩位小數
5.Decimal 結果轉化為string
from decimal import * str(Decimal('3.40').quantize(Decimal('0.0'))) # 結果為'3.40',字符串類型
