繁体   English   中英

提高Python中的浮点精度

[英]Increasing floating point precision in Python

我正在研究一个用以下代码计算pi的Leibniz近似的项目:

def pi(precision):
    sign = True
    ret = 0
    for i in range(1,precision+1):
        odd = 2 * i - 1
        if sign:
            ret += 1.0 / odd
        else:
            ret -= 1.0 / odd
        sign = not sign
    return ret

但是,输出值始终为12位数。 如何提高计算的精度(例如更多位数)? Python是否支持更精确的浮点,还是我必须使用一些外部库?

Python的float类型映射到您的平台的C编译器调用double (请参阅http://en.wikipedia.org/wiki/IEEE_floating_point_number )。

Python标准库还附带一个任意精度的十进制模块,称为decimalhttp//docs.python.org/2/library/decimal.html

使用Python的float,你可以得到15-17位数的精度(如果你看到更少,你可能需要在打印时使用不同的格式说明符)。

如果需要更多,则需要使用不同的方法(仅使用整数运算的方法),或者使用不同的方法来表示浮点数。

请参阅Python浮点任意精度可用?

尝试使用Decimal

阅读任意精度基本数学函数(Python) 原始信息以获取更多信息

Leibniz公式非常缓慢地收敛 - 老实说,你不会活得足够长,因为它可以获得12位精度。 点击这里获取一种极大加速的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM