Число 3069682093880544.81 преобразуется в 64-битное число с плавающей запятой в соответствии с форматом IEEE. Ближайшее число в этом формате - 43910A47D717A69F
. Однако обратное преобразование этого числа будет 3069682093880544,64. Как видите, последние 2 цифры после запятой изменились.
Количество значащих цифр в 64-битном с плавающей запятой IEEE составляет 16 цифр. Вероятно, поэтому при выводе на печать после 16 цифр печать прекращается, а это 3069682093880545.
Если вам нужно больше десятичных знаков, вам нужно выбрать метод, который не имеет числа с плавающей запятой IEEE. его обработки. (Обратите внимание, что даже интерпретатор исходного кода уже будет анализировать числа в формате с плавающей запятой.) Как упомянуто @ LeopardShark,
from decimal import *
print(Decimal("3069682093880544.81"))
переходит от String к Decimal без какой-либо обработки как float.