Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python是否适合大整数和浮点计算?_Python_Python 3.x_Floating Point - Fatal编程技术网

python是否适合大整数和浮点计算?

python是否适合大整数和浮点计算?,python,python-3.x,floating-point,Python,Python 3.x,Floating Point,我在试着玩素数。 我试过这个: p = 2**82_589_933 -1 p = p/7 A = 1.306377883863080690468614492602605712916784585156713644368053759966434053766826598821501403701197395707296960938103086882238861447816353486887133922146194353457871100331881405093575355831932648017213

我在试着玩素数。 我试过这个:

p = 2**82_589_933 -1
p = p/7
A = 1.306377883863080690468614492602605712916784585156713644368053759966434053766826598821501403701197395707296960938103086882238861447816353486887133922146194353457871100331881405093575355831932648017213832361522359062218601610856679057215197976095161992952797079925631721527841237130765849112456317518426331056521535131866841550790793723859233522084218420405320517689026025793443008695290636205698968726212274997876664385157661914387728449820775905648255609150041237885247936260880466881540643744253401310736114409413765036437930126767211713103026522838661546668804874760951441079075406984172603473107746

print(A)
得到了这个错误:

OverflowError: integer division result too large for a float
我也试过:

p = 2**82_589_933 -1
p = p/7
A = 1.306377883863080690468614492602605712916784585156713644368053759966434053766826598821501403701197395707296960938103086882238861447816353486887133922146194353457871100331881405093575355831932648017213832361522359062218601610856679057215197976095161992952797079925631721527841237130765849112456317518426331056521535131866841550790793723859233522084218420405320517689026025793443008695290636205698968726212274997876664385157661914387728449820775905648255609150041237885247936260880466881540643744253401310736114409413765036437930126767211713103026522838661546668804874760951441079075406984172603473107746

print(A)
但它会打印:
1.3063778838630806


有办法处理高精度浮点数吗?

是的,使用十进制数,而不是浮点数:

十进制模块支持快速正确舍入十进制 浮点运算。与浮动相比,它有几个优点 数据类型:

“十进制”是基于浮点模型设计的 人在心中,必然有一个至高无上的指导原则—— 计算机必须提供与计算机相同的算法 人们在学校学习的算术。”——摘自小数点 算术规范

十进制数字可以精确表示。相比之下,数字像 1.1和2.2没有二进制浮点的精确表示。最终用户通常不希望1.1+2.2显示为 3.30000000000000003,与二进制浮点相同。 (...) 与基于硬件的二进制浮点不同,十进制模块具有 用户可更改的精度(默认为28个位置),如下所示 根据给定问题的需要选择大的:


看,你想达到什么目的?您想如何处理
p/7的值?也许你在找
p//7
Decimal
类型很可能不是您想要的解决方案。