2016-04-08 16 views
-2

Python kullanarak küçük bir matematik denetleyicide çalışıyorum ve her şey bölümler dışında iyi çalışıyor. Sorun: İki ondalıklı (2/3 = 0,67), kayan noktalı bölüm, bir girişe eşittir (0.67). Ancak, bir kullanıcının girişini karşılaştırmak için kullandığım if deyimi, eşit olmadığını söylüyor.Python: Aynı değere sahip bir değişkene eşit olmayan bölüm

Varsayım: problem yüzdürme ile ilgilidir.

Kodum: Farklı bir yaklaşımla bir işlev oluşturabilir, ama çalışmıyor anlamak için merak ediyorum Tabii

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!" 

.

Benzer bir iş parçacığı varsa, lütfen bağlantıyı yükleyin ve bunu kapatın. Herhangi bir yardım için teşekkürler. eşitlik hep kullanım için yüzer kontrol ederken

+3

Ama 2/3 0.67'ye eşit değildir. – kindall

+0

Bunun yerine ondalık modül kullanılmasını öneririm. https://docs.python.org/3/library/decimal.html#decimal.Decimal –

+0

Rick: Bağlantı için teşekkürler. kindall: 2/3'ün yuvarlanmış sonucunu iki ondalık basamakla belirtiyorum. Bu yüzden 0.666666 ... (veya 2/3) ile 0.67 arasında bir fark olduğunu biliyorum. – canguru

cevap

1

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

Teşekkürler, Joran. İhtiyacım olan bu. – canguru

İlgili konular