#python #python_3x
Например необходимо вычислить корень 3 степени из 27000. Я записывал следующими способами a = pow(27000, 1/3) # ответ выходит примерно 29.99999993 a = 27000**(1/3) # ответ тот же Пытался использовать модуль fractions , но ответ не меняется. Как найти точное число, если есть такая возможность. Округление не желательно
Ответы
Ответ 1
Это общая проблема почти любого языка программирования. Дело в том, что континуум значений множества реальных значений каким-то способом надо отобразить на конечный набор машинных значений. Обычно это делается методом, который описывается стандартом IEEE 754 64 битовая (двойная точность) раскладка битов будет такая Соответственно принципиально есть числа, которые непредставимы точно - в данном случае 1/3 - не представимо точно. Возникнет невязка в районе 1e-8, что и дает 29.99999999 Можно посмотреть на точность представления например здесьОтвет 2
Можно использовать модуль SymPy: from sympy import simplify # pip install sympy In [124]: simplify("27000 ** (1/3)") Out[124]: 30
Комментариев нет:
Отправить комментарий