python - 相当于 float128

标签 python floating-point precision arbitrary-precision

如何在 Python 中使用等价于 __float128 的东西?我应该为 decimal.getcontext() 使用什么精度?我的意思是,精度是以小数位还是位指定的?

from decimal import *
getcontext().prec = # 34 or 128 ?

是否可以为给定操作“本地”设置精度,而不是使用 getcontext().prec 进行“全局”设置?

根据 Simon Byrne 的评论,是否有可能使用 Decimal 模拟 IEEE 754 定义的 __float128?如果我想要四倍精度,我在 Python 中还有哪些其他选择?

最佳答案

我是 gmpy2 的维护者。除了包装 MPFR 之外,gmpy2 还包装了 GMP(用于整数和有理数)和 MPC(用于复杂算术)。与使用十进制表示的 Decimal 相比,MPFR 和 MPC 都使用二进制表示。

这是一个简单的示例,显示了 float128 的等效用法。

>>> import gmpy2
>>> gmpy2.set_context(gmpy2.ieee(128))
>>> gmpy2.get_context()
context(precision=113, real_prec=Default, imag_prec=Default,
        round=RoundToNearest, real_round=Default, imag_round=Default,
        emax=16384, emin=-16493,
        subnormalize=True,
        trap_underflow=False, underflow=False,
        trap_overflow=False, overflow=False,
        trap_inexact=False, inexact=False,
        trap_invalid=False, invalid=False,
        trap_erange=False, erange=False,
        trap_divzero=False, divzero=False,
        trap_expbound=False,
        allow_complex=False)
>>> gmpy2.sin(gmpy2.mpfr("1.2"))
mpfr('0.932039085967226349670134435494826026',113)

对于 2.0.x 系列,gmpy2.ieee() 仅创建支持 32、64 或 128 位格式的上下文。开发分支支持更广泛的精度。

关于python - 相当于 float128,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41975886/

相关文章:

perl - 如何理解用于评估标记的脚本 conlleval.perl?

python - 是根算法

integer - 缩放(长)整数时防止溢出并保持精度

python - "AttributeError: no attribute ' 下载“使用PyTube

android - float 精度显示 (Android)

floating-point - WebGL渲染为浮点纹理

matlab - 在 Matlab 中测试 float 是否为整数

python - Django 表单 - 如何不验证?

python - Ajax 重定向后 Django View 不呈现

python - 为什么在 python 请求中使用 iter_content 和 chunk_size