社区导航

 

搜索
查看: 157|回复: 0

[资料分享] 如何设置numpy浮点精度?

[复制链接]

6412

TA的帖子

19

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2020-4-5 19:32 | 显示全部楼层 |阅读模式

只是用两种方式计算了相同的数字,但是在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/7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-1 17:22 , Processed in 0.087891 second(s), 20 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表