2015-01-13 2 views
-1

Я не уверен, если Im орехи или что-то, но посмотрите на этот код:Python: нет, если во втором цикле

a=1 
while a<=2.2: 
    if a==1.4: 
     print "OK" 
    a=a+0.4 

выход: "OK"

измененное состояние до 1,8:

a=1 
while a<=2.2: 
    if a==1.8: 
     print "OK" 
    a=a+0.4 

Выход: ничего !?

Может ли кто-нибудь помочь мне здесь?

+1

я не уверен, но мое первое предположение, что у вас возникли проблемы с точностью чисел с плавающей запятой. Попробуйте то же самое с целыми числами. –

+0

Просто попробуйте '1.4 + 0.4' и посмотрите, что вы получаете. – khelwood

+0

используйте эпсилон, если абс (1.8 - а) <= epsilon', где epsilon равен 0,00001 –

ответ

1

Проверка случайных поплавков на равенство, как правило, плохая идея. Вероятно, это что-то вроде 1.799999999.

Отъезд this link для получения дополнительной информации.

0

Попробуйте использовать круглую функцию

In [19]: round(6.79999999,1) 
Out[19]: 6.8 
Смежные вопросы