python3中大数除法不一致

当我计算24!使用数学库,结果与 24 不同!除以25计算!25岁。这是为什么?


>>> import math

>>> f=math.factorial(25)

>>> int(f/25)

620448401733239409999872

>>> math.factorial(24)

620448401733239439360000

>>> 


一只甜甜圈
浏览 83回答 2
2回答

慕田峪4524236

/执行“真正的分裂”。结果是一个浮点数,它没有足够的精度来表示确切的商。调用int无法逆转精度损失。浮点数学和舍入中的错误导致了差异。//是整数除法——这就是你想要的:>>> f = math.factorial(25)>>> f/256.204484017332394e+23>>> int(f/25)620448401733239409999872>>> math.factorial(24)620448401733239439360000>>> f//25620448401733239439360000   # correct answer

波斯汪

你不能使用/操作和int()除法后。此代码将舍入精确的除法。但是当你使用factorialfor 24 时,python 正在使用*操作。>>> from math import factorial>>> f25 = factorial(25)>>> f25# 620448401733239439360000这里可以使用//而不是/操作。 请在此处查看操作说明。>>> f24 = factorial(24)620448401733239439360000>>> f25 // 25620448401733239439360000
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python