为了账号安全,请及时绑定邮箱和手机立即绑定

python 如何控制数组的精度

python 如何控制数组的精度

九州编程 2019-08-02 07:03:13
有下面的程序:f是已知数组,精度为小数点后10位。f=[1.0, 0.9797959184, 0.9595918367,..]def F3(x,a,b):help3 = special.beta(a,b)*ahelp2 = special.hyp2f1(a,1-b,1+a,x)help1 = x**afunc = help1*help2/help3return funcPDF = F3(f,alpha,beta_)alpha和beta_都是已知的常数。运行后输出的PDF精度太高了。类似于:PDF=[1.00000000e+000, -2.17492975e+016, -2.42478284e+015,...]想把这组数据变成精度为小数点后4位的数。请问该怎么改?试了round和格式化,说array不能这样。在def F3中修改,会出现‘Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<stdin>", line 6, in F3TypeError: float argument required, not numpy.ndarray‘或者最好是在F3整个方程运算时就不需要那么高的精度。保持小数点后四位就可以了
查看完整描述

3 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞


我找你给我的修改了程序:from decimal import *    getcontext().prec = 6

    func = Decimal(help1)*Decimal(help2)/Decimal(help3)

运行之后出现错误,如图所示。是不是Array不能用这个修改运算精度?






查看完整回答
反对 回复 2019-08-05
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

float('{:.2f}'.format(price_t))
这样只是取两位小数并没有四舍五入
四舍五入有一个专门的函数round,下面是正确的用法
round(float(price_t), 2)

查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 1374 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信