python float 精度_numpy.float128的内部精度是多少?

numpy.longdouble指的是C编译器调用的任何类型long double。当前,这是numpy支持的唯一扩展精度浮点类型。

在x86-32和x86-64上,这是一种80位浮点类型。在更特殊的系统上,可能还有别的东西(在Sparc上的IIRC是实际的128位IEEE浮点数,在PPC上是double-double)。(这也可能取决于您所使用的操作系统和编译器,例如Windows上的MSVC根本不支持任何扩展精度。)

Numpy还将导出一些名称,例如numpy.float96或numpy.float128。导出这些名称中的哪一个取决于您的平台/编译器,但是无论您得到什么,总是引用与相同的基础类型longdouble。而且,这些名称极易引起误解。它们不表示96位或128位IEEE浮点格式。相反,它们指示基础类型使用的对齐位数long double。因此,例如在x86-32上long double为80位,但为了保持32位对齐而被填充多达96位,并且numpy将其称为float96。在x86-64上,它long double仍然是相同的80位类型,但现在它被填充至128位以保持64位对齐,并且numpy将此称为float128。没有额外的精度,只有额外的填充。

建议:忽略float96/ float128名称,只需使用即可numpy.longdouble。或者,除非您有真正令人信服的理由,否则最好坚持加倍。它们将更快,更便携等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值