2016-04-08 120 views
-2

我在使用Python的小型數學檢查器上工作,除了部門之外,一切工作都很順利。 問題:具有兩位小數(2/3 = 0.67)的商,float,等於輸入(0.67)。但是,我用來比較用戶輸入和結果的if語句表明它不相同。Python:商數不等於一個具有相同值的變量

假設:問題與float有關。

我的代碼:

result = float(value0/value1) 
result = round(result,2) 

value3 = input("Number 1") 
value3 = float(value3) 

if result != value3: 
    print "Wrong!" 
    print result 
elif result == value: 
    print "Right!" 

當然我可以創建一個不同的方法的功能,但我好奇地理解爲什麼這是行不通的。

如果有類似的線索,請發佈鏈接並關閉此鏈接。謝謝你的幫助。

+3

但2/3不等於0.67。 – kindall

+0

我建議使用'decimal'模塊來代替。 https://docs.python.org/3/library/decimal.html#decimal.Decimal –

+0

Rick:感謝您的鏈接。 kindall:我指2/3小數點後兩位小數的四捨五入結果。所以我知道0.666666 ...(或2/3)和0.67之間有區別。 – canguru

回答

1

檢查平等總是使用花車當

equal_threshold = 1e-5 
if abs(result-value)<equal_threshold: 
+0

謝謝,喬蘭。這就是我需要的。 – canguru

相關問題