编程语言
首页 > 编程语言> > Python中的浮动限制

Python中的浮动限制

作者:互联网

我正在用python编写程序

import sys

def func(N, M):
    if N == M:
        return 0.00
    else:
        if M == 0:
            return pow(2, N+1) - 2.00
        else :
            return 1.00 + (0.5)*func(N, M+1) + 0.5*func(N, 0)

def main(*args):
    test_cases = int(raw_input())
    while test_cases:
        string = raw_input()
        a = string.split(" ")
        N = int(a[0])
        M = int(a[1])
        test_cases = test_cases -1
        result = func(N, M)
        print("%.2f" % round(result, 2))

if __name__ == '__main__':
        sys.setrecursionlimit(1500)
        sys.exit(main(*sys.argv))

对于N = 1000,M = 1和N = 1000,M = 2它给出相同的答案
在搜索时,我发现浮动限额超过10 ^ 400.我的问题是如何克服它

解决方法:

Python中的浮点数是IEEE的两倍:它们不是无限的精度.但是,如果您的计算仅需要整数,则只需使用整数:它们具有无限的精度.不幸的是,我认为您的计算不会停留在整数范围内.

有一些基于GMP构建的第三方程序包,它们提供了任意精度的浮点数:https://www.google.com/search?q=python%20gmp

标签:floating-point,python
来源: https://codeday.me/bug/20191101/1986648.html