2016-04-08 2 views
-2

Я работаю над небольшим математическим контролером с использованием Python, и все работает хорошо, за исключением разделов. Задача: Фактор с двумя десятичными знаками (2/3 = 0,67), float, равен входу (0,67). Но оператор if, который я использую для сравнения ввода пользователя с результатом, говорит, что он не равен.Python: Коэффициент неравный с переменной с таким же значением

Успение: проблема связана с поплавком.

Мой код:

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

Вместо этого я предлагаю использовать «десятичный» модуль. https://docs.python.org/3/library/decimal.html#decimal.Decimal –

+0

Рик: Спасибо за ссылку. kindall: Я ссылаюсь на округленный результат 2/3 с двумя десятичными знаками. Поэтому я знаю, что разница между 0.666666 ... (или 2/3) и 0,67. – canguru

ответ

1

при проверке поплавки для равенства всегда использования

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

Спасибо, Йоран. Это то что мне нужно. – canguru

Смежные вопросы