我正在为python 2.7.3
中的大号做mod,而python给出了错误的答案,如下所示。如果数字很小,那么它会给出正确的答案。
任何人都可以解释为什么会发生这种情况以及我如何在python中修复? 下面简单的脚本显示小数字mod显示正确的答案,但大数字mod给出了错误的答案。
root# cat mod.py
bigNum=46623871433466988486147975697094761425185742805822717249007
smallNum=717249007
print "bigNum % 3: " + str(bigNum % 3)
print "smallNum % 3: " + str(smallNum % 3)
root# python mod.py
bigNum % 3: 0
smallNum % 3: 1
提前感谢您的帮助。
答案 0 :(得分:7)
您期望它返回什么?它看起来对我来说:
>>> bigNum=46623871433466988486147975697094761425185742805822717249007
>>> bigNum % 3
0L
>>> divmod(bigNum, 3)
(15541290477822329495382658565698253808395247601940905749669L, 0L)
>>> _[0] * 3 == bigNum
True
请注意,数字之和可以被3整除,因此bigNum
也是:
>>> sum(map(int, str(bigNum)))
288
>>> 288 % 3
0