Точность с плавающей точкой. Когда вы делаете модуль с плавающей точкой, значение преобразуется в число с плавающей точкой, и 10 ^ 23 оказывается больше, чем числа, которые могут быть представлены естественным образом. Мы можем точно видеть, что происходит, используя Decimal
:
>>> from decimal import Decimal
>>> (sign, mantissa, exponent) = Decimal(10**23).as_tuple()
>>> sign, mantissa, exponent
(0, (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 0)
>>> (sign, mantissa, exponent) = Decimal(float(10**23)).as_tuple()
>>> sign, mantissa, exponent
(0, (9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 6, 1, 1, 3, 9, 2), 0)