Python ZeroDivisionError при выполнении вычисления с плавающими точками - PullRequest
0 голосов
/ 09 мая 2020

Я не уверен, почему это продолжается. Я пытаюсь вычислить процентное изменение цены акции, однако это вызывает ошибку.

p = ((current - past) / past) * 100
ZeroDivisionError: float division by zero

Это функция:

def getPercent(past: float, current: float):
    p = ((current - past) / past) * 100
    return round(p, 2)

И я печатаю результаты с использованием str (getPercent ()). Есть идеи, почему это вызывает эту ошибку?

1 Ответ

0 голосов
/ 09 мая 2020

Единственный способ получить здесь ошибку деления нуля - это если past равно 0. Вы можете использовать try-clause.

def getPercent(past: float, current: float):
    try:
        p = ((current - past) / past) * 100
        p = round(p, 2)
    except:
        p = 'undefined'
    return p

Или используйте маленькое eps при делении для чисел c стабильности.

def getPercent(past: float, current: float):
    eps = 1e-9
    p = ((current - past + eps) / (past + eps)) * 100 # considering past is never - eps
    return round(p, 2)
...