首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理python中的大浮点数

如何处理python中的大浮点数
EN

Stack Overflow用户
提问于 2016-01-27 10:44:13
回答 1查看 4.4K关注 0票数 2

我的代码的某些部分生成了大的int数,在其他calculations.This编号中进一步使用它是通过调用阶乘函数生成的。因为在其他的计算中,浮点数和一个大int是相关的,所以我得到了一个错误

"OverflowError:长int太大,不能转换为浮动“。

是否有解决这一限制的办法?这是我的密码。

代码语言:javascript
复制
import numpy as np
    #=============================alpha
def alpha(li,dtype=float):
    ai=1.0
    for mi in range(1,li+1):
        ai=ai*(1-(1/(2.0*mi)))
    return ai
def gamma(li,dtype=int):
    return  np.power(np.exp(1)/li,li)*(np.math.factorial((li)))

def J1J2(xi,deltai,dtype=int):
    xii=np.abs(xi)
    j1i=np.power(np.abs(xii-deltai),2.0)
    j2i=np.power(np.abs(xii+deltai),2.0)
    return int(np.floor(j1i)),int(np.ceil(j2i))
#========================***********
def R(Xi,sigmai,ni,dtype=float):
    ui=Xi/sigmai

    a1i=np.power(np.exp(1)/ni,ni)
    a2i=np.power(ui,2.0*ni)
    a3i=(np.power(ui,2.0))
    a4i=np.exp(-a3i)
    ri=a1i*a2i*a4i    
    return ri

def R1(Xi,sigmai,ni,dtype=float):
    ui=1.0*Xi/sigmai
    ri=np.exp(-2.0*np.power(ui-np.sqrt(ni),2.0))    
    return  ri    

def Sumpro(xi,ni,sigmai,a1i,a2i,dtype=float):
    Sum=0.0
    for li in (a1i,a2i):
        Sum=Sum+(alpha(li)/gamma(np.abs(ni-li)))*R(xi,sigmai,np.abs(ni-li))
    return 2.0*gamma(ni)*Sum

def Xmatrix(Xi,sigmai,Kxi,Nxi,deltai,dtype=float):
    Xmati=np.zeros((Kxi,Nxi),dtype=float)
    for i in range(Nxi):
        xi=1.0*Xi[i]
        ui=xi/sigmai
        J1i,J2i=J1J2(ui,deltai)
        print(i,' ',J1i,J2i)
        Xmati[0:J1i,i]=1
        for j in range(J1i,J2i):
            print(j )
            Xmati[j,i]=Sumpro(xi,j,sigmai,np.abs(J1i),np.abs(j))
    return Xmati    


def Xmatrix1(Xi,sigmai,Kxi,Nxi,deltai,dtype=float):
    Xmati=np.zeros((Kxi,Nxi),dtype=float)
    for i in range(Nxi):
        xi=1.0*Xi[i]
        ui=xi/sigmai
        ni=int(np.floor(np.sqrt(np.abs(ui))))
        J1i,J2i=J1J2(ui,deltai)
        Xmati[ni,i]=Sumpro(xi,ni,sigmai,np.abs(J1i),np.abs(ni))

    return Xmati    

x=np.linspace(10.0,100.0,50)
X=Xmatrix1(x,1,100,50,np.exp(-1.05))    
EN

回答 1

Stack Overflow用户

发布于 2022-08-19 05:34:37

python中的整数大小理论上是无限的,实际上仅限于内存,但浮点数是有限的。您可以通过以下代码检查python中浮点数的限制:

代码语言:javascript
复制
In [1]: import sys
In [2]: sys.float_info
Out[3]: sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

解决方案:您可以使用一些外部库来管理大型浮点数,例如:大浮子

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35035126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档