如何檢查兩個金額相乘的結果是否等於某個總金額或幾美分。例如:5.57 * 2.92 = 16.2644和3.25 * 5 = 16.25。 我每次增加第一筆金額爲0.01的金額以嘗試找到最接近總金額的金額,第二筆金額不變。檢查兩個金額的總和是否等於某個總差額
回答
如果您使用Python(或任何編程語言)進行財務類型計算,您可以使用而不是希望使用浮點數(http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems)。
相反,一定要至少使用decimal
模塊,它會給你任意精度的十進制數(http://docs.python.org/2/library/decimal.html)。
至於你的實際問題:
from decimal import Decimal
r1 = Decimal("5.57") * Decimal("2.92")
r2 = Decimal("3.25") * Decimal("5")
epsilon = Decimal("0.01")
if abs(r1 - r2) <= epsilon:
print "Almost equal!"
它至少部分是這樣做的:0.01不能用二進制表示,這意味着如果OP使用浮動,OP的計算會很早就開始累積錯誤。 –
好點。編輯! –
謝謝,那對我有幫助。 –
小數還是不錯的。
,但對一個公差範圍內兩個浮體比較:
tolerance = 0.04
if abs(number1 - number2) < tolerance:
print('the numbers are close')
謝謝,是否有任何優勢使用浮動,而不是小數由馬克斯諾埃爾建議? –
這是寫得最快,最容易的一點,但由於準確性問題,這裏的一般建議是「十進制」。 – jayelm
- 1. 總額和部分金額
- 2. 總金額時,另一場等於某個值
- 3. 總金額總是爲零
- 4. 金額加總
- 5. 查詢每個項目的金額大於100的訂單總金額
- 6. 總金額的更新金額
- 7. 金額返回0而不是實際金額的總和
- 8. 01價值對總金額的差異
- 9. JQgrid總金額排
- 10. 計算總金額
- 11. xslt彙總金額
- 12. 訂單總數,總金額和AOV
- 13. SQL查詢 - 檢查每個員工的總金額並顯示這些員工的金額低於5000
- 14. Mysql查詢總和動態金額
- 15. 檢查進度條是否等於JQuery的金額
- 16. 限額總和只在前10個金額
- 17. 獲取每個行的總金額
- 18. 從總計和金額中計算總額
- 19. Rails:如何總計每天和整個期間的總金額
- 20. 使用mysql和codeigniter檢查總和(金額)的條件
- 21. 產品的稅金總額
- 22. 使用sqlite的總金額
- 23. 總銷售金額和總更新到另一個表
- 24. 發票總額的份額(總和組)
- 25. 基於另一個行值顯示金額的總和
- 26. 金額總額後應自動加入
- 27. SUM子查詢每行的總金額
- 28. 從查詢返回的總金額
- 29. 交換機的時差和金額的總和
- 30. 條紋收取總金額
似乎很簡單 - 我們可以看到你的代碼? – jedwards
所以你想計算涉及的總股份? –
@AamirAdnan我在計算潛在利潤,如果馬上的價格在你支持它之後下跌,基於蜱,所以說你回到5.0,馬下降到4.8,我想顯示你可以爲它鋪平了多少把你的債務轉化爲利潤 –