首页 > 解决方案 > 如何处理 Python 3 中的大浮点数(循环函数)?

问题描述

我对 Python 中的浮点数太大有一个小问题。发生溢出错误。

函数如下所示:

N(t + 1) = (1 + c) N(t) - (c / d) * N(t)**2其中 t 是时间,c 和 d 是常数。

我需要它最多计算一分钟(t = 60)。但是在 t= 8、9 或 10 之后,我得到了溢出错误。

def nValue(t):
    n_calc = []
    c = 2.3 # 0..3
    d = 95  # 1..250
    n_0 = 450 # 0..600
    n_1 = (1 + c) * n_0 - c / d * n_0**2
    n_calc.append(n_0)
    n_calc.append(n_1)
    for i in range(2, t+1):
        n_curr = (1 + c) * n_calc[i- 1] - (c / d) * (n_calc[i- 1]**2)
        n_calc.append(n_curr)

    return n_calc

我应该使用 Decimal 类型、BigFloat 还是其他类型?

最后我必须绘制情节......(2D Matplotlib情节)。也许我应该以某种方式“缩放”这个方程?

标签: pythonoverflow

解决方案


您可以使用这个先前的答案作为参考。 OverflowError: (34, 'Result too large') 十进制类没有限制,所以你应该使用 use。它与 GMP 和其他任意精度库具有相同的目的。

我希望这可以帮助你。 https://en.wikipedia.org/wiki/List_of_arbitrary-precision_arithmetic_software


推荐阅读