在python中处理长整数除法

时间:2019-02-11 20:32:19

标签: python python-3.x long-integer integer-division

我在python整数除法中观察到数据丢失。 下面是一个示例:

In [37]: 1881676377427221798261593926550420634004875213170503083 * 123456789789456123
Out[37]: 232305724979817822068561403710502859128427941904411569030164388864727209

In [38]: int(232305724979817822068561403710502859128427941904411569030164388864727209 / 123456789789456123)
Out[38]: 1881676377427221679799422390196630516487239698149801984

In [39]: 232305724979817822068561403710502859128427941904411569030164388864727209 / 123456789789456123
Out[39]: 1.8816763774272217e+54

观察:在多次尝试使用长整数随机数时,我观察到数字似乎在尾数指数格式中失去精度的地方附近有所不同。

有人可以帮助我知道我在哪里失踪吗? (或者这真的是一个限制!)

1 个答案:

答案 0 :(得分:2)

在Python 3中,整数除法不再是默认值。如果您想在Python 3中使用整数除法,则需要使用//运算符而不是/

>>> 232305724979817822068561403710502859128427941904411569030164388864727209 / 123456789789456123
1.8816763774272217e+54

>>> 232305724979817822068561403710502859128427941904411569030164388864727209 // 123456789789456123
1881676377427221798261593926550420634004875213170503083