На типичной машине, на которой запущен Python, для плавающего Python доступно 53 бита точности.Если вы попытаетесь пойти дальше, Python исключит наименьшую часть, чтобы число можно было правильно представить.
Таким образом, значение 1 поглощается или отменяется, чтобы можно было представить высокое значение, которое вы пытаетесь вычислить.
Предел получается путем вычитания (или сложения) значения, умноженного на число с плавающей точкой epsilon.
На моем компьютере:
maxfloat == 1.7976931348623157e+308
epsilon == 2.220446049250313e-16
образец тестового кода
import math
import sys
m = sys.float_info.max # type 'float'
eps = sys.float_info.epsilon
print(m == m-(m*(eps/10))) # True
print(m == m-(m*eps)) # False
m*eps
- это наименьшее значение, которое вы должны вычесть, чтобы сравнение не сработало.Это всегда относительно значения m
.