Значение для epsilon в Python

существует ли стандартное значение (или метод получения) epsilon в Python? Мне нужно сравнить значения с плавающей запятой и сравнить с наименьшей возможной разницей.

В C++ есть функция, предусмотренного numeric_limits::epsilon( ) который дает значение epsilon для любого заданного типа данных. Есть ли эквивалент в Python?

3 ответов


информация sys.float_info, что соответствует float.h в C99.

>>> import sys
>>> sys.float_info.epsilon
2.220446049250313e-16

As функции strcat написал, есть sys.float_info.epsilon.

но не забывайте о подводных камнях использования его в качестве абсолютного запаса ошибок Для сравнения с плавающей запятой. Е. Г. для больших чисел, ошибка округления может превышать Эпсилон.

Если вы думаете, что вам нужно обновить, стандартная ссылка-Дэвид Голдберг Что Каждый Компьютерщик Должен Знать Об Арифметике С Плавающей Запятой, или для более простого обзора вы можете проверить Плавающая Точка Руководство.


удивлен, что никто не упомянул об этом здесь; я думаю, что многие люди будут использовать и NumPy.finfo( тип(переменная) ).eps. Или .resolution Если это для оценки точности.

отметим, что finfo только для типов с плавающей запятой, и что он также работает с собственным Python float type (т. е. не ограничивается типами numpy). Эквивалент для целых типов -iinfo, хотя он не содержит точной информации (потому что, ну, с чего бы это?).