首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >乘数与math.factorial的阶乘计算

乘数与math.factorial的阶乘计算
EN

Stack Overflow用户
提问于 2022-07-27 14:31:20
回答 1查看 45关注 0票数 0

最近,我不得不计算出一个问题,其中包括Python中的置换和阶乘。当P(n,m) =n!/(N)!时,我不得不计算P(24,23) * P(31,18)

  1. 我最初的尝试是使用“数学”中的“阶乘”函数。
代码语言:javascript
复制
from math import factorial

res = factorial(24) / factorial(24 - 23) * factorial(31) / factorial(31 - 18)
print(int(res))

这给了我819307862388221490258228866079033329420993560576,,但这不是问题的答案。

  1. 我的第二次尝试就是把所有的数字相乘
代码语言:javascript
复制
res = 1
for i in range((24 - 23 + 1), (24 + 1)):
    res *= i
for i in range((31 - 18 + 1), (31 + 1)):
    res *= i
print(res)

这给了我一个被接受为答案的819307862388221633448919424563251511296000000000,。

我不认为阶乘函数给出了错误的结果,所以我假设差异是因为python计算大数字的方式,或者是由于最后的整数转换。

但我不太确定我需要寻找什么,所以我来到这里。

有人能告诉我为什么计算结果会有这样的差异吗?或者我应该寻找什么来得到我的问题的答案?

EN

回答 1

Stack Overflow用户

发布于 2022-07-27 15:45:14

关于浮点算法,每个计算机科学家应该知道什么?

使用/除法在python中生成一个float,即使这两个操作数都是整数。浮点数不能准确表示所有的数字,因此从操作中得到错误的结果。

若要使用整数除法,请使用//运算符:

代码语言:javascript
复制
res = factorial(24) // factorial(24 - 23) * factorial(31) // factorial(31 - 18)
# gives res = 819307862388221633448919424563251511296000000000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73139837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档