当整数很长时使用Python整数除法

问题描述 投票:0回答:1

我有一个148位整数N:

N = 189880498154874410908471072304455370977803974052993577744714297943955583553239505756289235529074177090189772883747055299991539896681082073700

如果我执行以下操作:

int(N/5)

我知道

37976099630974880812875385175875453232636859166769727967703624184530129537145373074783104855861950095228086215792238563575229919019266998272

这是绝对错误的!!

相反,如果我在mpmath中使用任意浮点精度,则会得到正确的结果

from mpmath import mp, mpf as f
mp.dps = 200; mp.pretty = True

f(N)/5
>> 37976099630974882181694214460891074195560794810598715548942859588791116710647901151257847105814835418037954576749411059998307979336216414740.0

所以,为什么第一个结果是错误的?我相信Python可以处理任意大小的整数

python python-3.x integer long-integer integer-division
1个回答
0
投票

在python 3中:

//用于整数除法,这将为您提供正确的结果。

print(N//5)

输出:

37976099630974882181694214460891074195560794810598715548942859588791116710647901151257847105814835418037954576749411059998307979336216414740

其中/用于浮点除法,因此在四舍五入数字时可能会出错。

© www.soinside.com 2019 - 2024. All rights reserved.