【问题标题】:Python: Allow precision for very small number?Python:允许非常小的数字的精度?
【发布时间】:2016-03-01 18:27:32
【问题描述】:

在 Python 中,当 x=27. 时,Exp(-xx) 为 ~10^-317。当 x 大于 27 时,Exp[-xx] 在 Python 中变为零。但我的 x 域将从 0 到 50 甚至更多。那么如何在 x>27 之后阻止 Python 将指数舍入为零呢?甚至有可能做到吗?

谢谢你, --拉杰

【问题讨论】:

    标签: python-2.7 precision


    【解决方案1】:

    要使用 python 计算 非常大的数字,您可以尝试像这样使用 gmpy2 包:

    import numpy as np
    from gmpy2 import mpz
    n = 50
    print pow(mpz(np.e),n*n)
    

    【讨论】:

      【解决方案2】:

      本机 Python 浮点类型使用标准 C 双精度作为基础值。您已达到 IEEE 64 位浮点类型的限制。

      您将需要使用不同的数据类型。我维护 gmpy2 库,它支持任意精度整数 (mpz)、有理数 (mpq)、实数 (mpfr) 和复数 (mpc) 类型。该库是用 C 编写的,使用 GMP、MPFR 和 MPC 库。

      >>> import gmpy2
      >>> gmpy2.exp(-50*50)
      mpfr('1.8356726691621567e-1086')
      >>> 
      

      mpmath 库是另一个不错的选择。

      【讨论】:

        猜你喜欢
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-08
        • 1970-01-01
        • 2020-02-11
        • 1970-01-01
        • 2018-12-24
        相关资源
        最近更新 更多