Python组合数精度问题

为什么两个不一样吗?问题出在哪、为什么?我的代码放在图2了,讲道理两个结果应该一样呀,是哪个错了?

img

img

有可能是数据精度的问题,你用decimal试一下

import math
from decimal import *

print(Decimal(math.factorial(100)) / (Decimal(math.factorial(50)) * Decimal(math.factorial(50))))


def C(n, m):
    t = 1
    i, j = n, 1
    while j <= m:
        t = Decimal(t) * i / j
        i -= 1
        j += 1
    return t


print(C(100, 50))