626|0

6943

帖子

19

资源

纯净的硅(中级)

如何设置numpy浮点精度? [复制链接]

只是用两种方式计算了相同的数字,但是在numpy中,它会出错
[[ 0.910221324013388510820732335560023784637451171875]]
[[-0.9102213240133882887761274105287156999111175537109375]]
这个数字与e ^( – 15)相同,但后来有所不同.我该如何处理这个错误?

有没有办法限制浮点精度?

由于我使用这些数字计算指数,即使很小的差异也会导致令人沮丧的错误……

您是否关心结果的实际精度,或者从两次计算中得到完全相同的数字?
如果您只想要相同的数字,可以使用np.around()将结果四舍五入到一些适当的小数位数.但是,通过这样做,您只会降低结果的精度.

如果您确实想要更精确地计算结果,可以尝试使用np.longdouble类型作为输入数组,depending on your architecture and compiler可能会为您提供80位或128位浮点表示,而不是标准的64位np.double *.

您可以使用np.finfo比较精确的小数位数:

print np.finfo(np.double).precision
# 15

print np.finfo(np.longdouble).precision
# 18
请注意,并非所有numpy函数都支持long double – 有些将向下转换为double.

*但是,一些编译器(如Microsoft Visual C)总是将long double视为double的同义词,在这种情况下,np.longdouble和np.double之间的精度没有差别.

 


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/6 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表