大量算术运算不匹配

时间:2019-01-12 04:30:47

标签: python

大量的简单计算不匹配。

请参见下面的迭代代码。 rr1以相同的值开头。每个对象在每次迭代中都添加a或b。
令人困惑的是,(a-b)始终为零,但(r-r1)却没有经过几次迭代。
出了什么问题?

n = 93
k = 40
r = math.factorial(n) // 2 ** k
r1 = r
for i in range(1, k + 1):
    a = 1 * math.factorial(n - i) // 2 ** (k - i)
    b = 1.0 * math.factorial(n - i) // 2 ** (k - i)
    r += a
    r1 += b
    print(i, '       r - r1 =', r - r1, '       a - b =', a - b)

人们会期望a-b为零,r-r1也为零。
但是,a-b始终为0,而​​r-r1则不是。
请参阅下面的代码打印输出。

1        r - r1 = 0.0        a - b = 0.0
2        r - r1 = 0.0        a - b = 0.0
3        r - r1 = 0.0        a - b = 0.0
4        r - r1 = 0.0        a - b = 0.0
5        r - r1 = 1.5760802478557792e+116        a - b = 0.0
6        r - r1 = 1.5760802478557792e+116        a - b = 0.0
7        r - r1 = 1.5760802478557792e+116        a - b = 0.0

0 个答案:

没有答案