我想将两个整数映射为一个,用于类中的哈希函数。这些整数范围从 0 到 12856320000000。我听说我可以使用下面的 Cantour 配对函数来做到这一点
但是,我的sys.maxsize
是
9223372036854775807
因此,当 k1 和 k2 很大(如下例所示)时,答案将不是整数
k1 = 6887309306
k2 = 6887309307
pi(k1,k2)=9.487005898057764e+19
有办法解决这个问题吗?谢谢
最佳答案
您的问题不是由数字引起的,而是由除以 2 引起的。Python 3.x 中的除法总是产生 float 。您应该使用整数除法:
(k1 + k2) * (k1 + k2 + 1) // 2 + k2
#94870058980577640498
关于python - 在 Python 3 中将两个整数映射为一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51182342/