如何解决python是否适合大整数和浮点计算?
我正在尝试使用素数。 我尝试过:
p = 2**82_589_933 -1
p = p/7
并收到此错误:
OverflowError: integer division result too large for a float
也尝试过:
A = 1.306377883863080690468614492602605712916784585156713644368053759966434053766826598821501403701197395707296960938103086882238861447816353486887133922146194353457871100331881405093575355831932648017213832361522359062218601610856679057215197976095161992952797079925631721527841237130765849112456317518426331056521535131866841550790793723859233522084218420405320517689026025793443008695290636205698968726212274997876664385157661914387728449820775905648255609150041237885247936260880466881540643744253401310736114409413765036437930126767211713103026522838661546668804874760951441079075406984172603473107746
print(A)
但它打印:1.3063778838630806
是否可以使用高精度浮点数?
解决方法
是的,请使用小数而不是浮点数:
十进制模块提供对快速正确舍入的十进制的支持 浮点运算。与浮动相比,它具有几个优点 数据类型:
“十进制”基于浮点模型,该模型设计为 铭记于心,并且必然具有最重要的指导原则– 计算机必须提供一种与 人们在学校学习的算法。” –摘自小数 算术规范。
小数可以精确表示。相反,像 1.1和2.2在二进制浮点数中没有确切的表示形式。最终用户通常不希望1.1 + 2.2显示为 3.3000000000000003,就像处理二进制浮点一样。 (...) 与基于硬件的二进制浮点数不同,十进制模块具有一个 用户可更改的精度(默认为28位)可以是 对于给定的问题需要大一些:
>>> from decimal import *
>>> getcontext().prec = 6
>>> Decimal(1) / Decimal(7)
Decimal('0.142857')
>>> getcontext().prec = 28
>>> Decimal(1) / Decimal(7)
Decimal('0.1428571428571428571428571429')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。