Почему мое утверждение «если» не исключает нули? - PullRequest
0 голосов
/ 19 января 2020

Я должен разделить здесь некоторые значения, но так как это ноль, это даст "ZeroDivisionError". Поэтому я кодировал следующее:

if list_actual_revenue[x] != 0.00 or list_actual_revenue[x] != 0:
    print('********************')
    print(list_actual_revenue[x])
    print('********************')
    value_rev = float(list_forecast_revenue[x]) - float(list_actual_revenue[x])
    value_rev = value_rev / float(list_actual_revenue[x])

Я получаю ошибку:

    value_rev = value_rev / float(list_actual_revenue[x])
ZeroDivisionError: float division by zero

Поэтому я решил распечатать значения и посмотреть, что происходит

********************
3120.00
********************
********************
3055.00
********************
********************
11625.00
********************
********************
11937.50
********************
********************
3000.00
********************
********************
3000.00
********************
********************
3000.00
********************
********************
3000.00
********************
********************
3000.00
********************
********************
3000.00
********************
********************
0.00
********************

Как видите, последняя строка - "0.00". У меня вопрос: почему там 0,00, если «if if» должно исключить его?

1 Ответ

1 голос
/ 19 января 2020

Да, я чувствую твою боль. Если вы используете плавающую точку, то вам никогда не следует использовать операторы "==" или "! =". Вместо этого попробуйте проверить, является ли абсолютное значение list_actual_revenue [x]> 0.

Или вы можете попытаться отловить ошибку и затем обработать нулевой регистр, как здесь: Ошибка python: [ZeroDivisionError: Division на ноль]

...