处理 python 中的长整数除法
Handling long integer-divisions in python
我观察到 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
观察: 在对随机长整数进行多次尝试后,我观察到数字似乎在尾数指数格式中失去精度的地方附近有所不同。
任何人都可以帮我知道我失踪的地方吗? (或者这真的是一个限制!)
在Python中不再默认3整数除法。如果您想在 Python 3 中使用整数除法,您需要使用 //
运算符而不是 /
.
>>> 232305724979817822068561403710502859128427941904411569030164388864727209 / 123456789789456123
1.8816763774272217e+54
>>> 232305724979817822068561403710502859128427941904411569030164388864727209 // 123456789789456123
1881676377427221798261593926550420634004875213170503083
我观察到 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
观察: 在对随机长整数进行多次尝试后,我观察到数字似乎在尾数指数格式中失去精度的地方附近有所不同。
任何人都可以帮我知道我失踪的地方吗? (或者这真的是一个限制!)
在Python中不再默认3整数除法。如果您想在 Python 3 中使用整数除法,您需要使用 //
运算符而不是 /
.
>>> 232305724979817822068561403710502859128427941904411569030164388864727209 / 123456789789456123
1.8816763774272217e+54
>>> 232305724979817822068561403710502859128427941904411569030164388864727209 // 123456789789456123
1881676377427221798261593926550420634004875213170503083