Я хотел бы отобразить два целых числа в один для хэш- функции в классе. Эти целые числа варьируются от 0 до 12856320000000. Я слышал, что я могу использовать следующую функцию спаривания Cantour, чтобы сделать это
Однако мой sys.maxsize
9223372036854775807
В результате, когда k1 и k2 являются большими в следующем примере, ответ не будет целым
k1 = 6887309306
k2 = 6887309307
pi(k1,k2)=9.487005898057764e+19
Есть ли способ решить эту проблему? Спасибо
Ваша проблема вызвана не числом, а тем, что вы делите на 2. Подраздел в Python 3.x всегда производит число с плавающей запятой. Вы должны использовать целочисленное деление:
(k1 + k2) * (k1 + k2 + 1) // 2 + k2
#94870058980577640498
long
целые?