我想将两个整数映射为一个类,用于 hash 函数。这些整数的范围是0到12856320000000。我听说我可以使用下面的Cantour配对功能来实现
但是,我的sys.maxsize
是
9223372036854775807
结果,如以下示例所示,当k1和k2较大时,答案将不是整数
k1 = 6887309306
k2 = 6887309307
pi(k1,k2)=9.487005898057764e+19
反正有解决此问题的方法吗?谢谢
答案 0 :(得分:3)
您的问题不是由数字引起的,而是由您除以2的事实引起的。Python3.x中的除法总是产生浮点数。您应该使用整数除法:
(k1 + k2) * (k1 + k2 + 1) // 2 + k2
#94870058980577640498