2016-04-08 87 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

相关问题