Python 3.9+Числа и математикафункция
math.ulp
представление
Величина младшего разряда (unit in the last place) числа — шаг между соседними float.
Синтаксис
math.ulp(...)
Расстояние между соседними float не постоянно: оно растёт вместе с величиной числа — около 1.0 это примерно 2.2e-16, а около 1e16 уже 2.0, поэтому прибавление единицы к такому числу вообще ничего не меняет. Отсюда правило сравнения: допуск задают не фиксированной эпсилон, а несколькими ulp от самих сравниваемых значений (или просто берут math.isclose с относительным допуском). Доступна с Python 3.9.
Примеры
import math
print(math.ulp(1.0)) # → 2.220446049250313e-16
print(math.ulp(0.0)) # → 5e-324
print(math.ulp(1e16)) # → 2.0
print(1.0 + math.ulp(1.0)) # → 1.0000000000000002
print(1.0 + math.ulp(1.0) / 2 == 1.0) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности