Когда вы конвертируете sys.maxint в число с плавающей запятой или в двойное число, результат в точности равен 0x1p63, потому чтозначение содержит только 24 или 53 бита (включая неявный бит), поэтому завершающие биты вызывают округление в большую сторону. (sys.maxint равен 2 ^ 63 - 1, а при округлении получается 2 ^ 63.)
Затем, когда вы печатаете это число, некоторые подпрограммы форматируют его как десятичное число. Для этого он рассчитывает цифры для представления 2 ^ 63. Тот факт, что он способен печатать 9.2233720368547758e + 18, не означает, что исходное число содержит биты, которые отличают его от 9.2233720368547759e + 18. Это просто означает, что биты в нем действительно представляют 9,2233720368547758e + 18 (приблизительно). Фактически, следующее представимое число с плавающей точкой с двойной точностью - 9223372036854777856 (приблизительно 9,2233720368547778e + 18), что равно 2 ^ 63 + 2048. Таким образом, младшие 11 битов этих целых чисел отсутствуют в двойном. Форматер просто отображает число, как будто эти биты равны нулю.