Первый является более точным, поскольку дает точный целочисленный результат.
Второй представляет промежуточный результат в виде числа с плавающей точкой. Плавания имеют ограниченное разрешение ( 53 бита мантиссы ), в то время как для точного представления результата требуется 66 бит. Это приводит к потере точности.
Если мы посмотрим на шестнадцатеричное представление обоих результатов:
>>> hex(55347740058143507128)
'0x3001aac56864d42b8L'
>>> hex(55347740058143506432)
'0x3001aac56864d4000L'
мы видим, что младшие значащие биты результата, которые не помещались в 53-битную мантиссу, были установлены в ноль.
Один из способов увидеть округление напрямую, без каких-либо осложнений, вызванных делением:
>>> int(float(55347740058143507128))
55347740058143506432L