为了账号安全,请及时绑定邮箱和手机立即绑定

python3中大数除法不一致

python3中大数除法不一致

一只甜甜圈 2023-03-16 09:14:09
当我计算24!使用数学库,结果与 24 不同!除以25计算!25岁。这是为什么?>>> import math>>> f=math.factorial(25)>>> int(f/25)620448401733239409999872>>> math.factorial(24)620448401733239439360000>>> 
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

/执行“真正的分裂”。结果是一个浮点数,它没有足够的精度来表示确切的商。调用int无法逆转精度损失。浮点数学和舍入中的错误导致了差异。


//是整数除法——这就是你想要的:


>>> f = math.factorial(25)

>>> f/25

6.204484017332394e+23

>>> int(f/25)

620448401733239409999872

>>> math.factorial(24)

620448401733239439360000

>>> f//25

620448401733239439360000   # correct answer


查看完整回答
反对 回复 2023-03-16
?
波斯汪

TA贡献1811条经验 获得超4个赞

你不能使用/操作和int()除法后。此代码将舍入精确的除法。但是当你使用factorialfor 24 时,python 正在使用*操作。


>>> from math import factorial

>>> f25 = factorial(25)

>>> f25

# 620448401733239439360000

这里可以使用//而不是/操作。 请在此处查看操作说明


>>> f24 = factorial(24)

620448401733239439360000

>>> f25 // 25

620448401733239439360000


查看完整回答
反对 回复 2023-03-16
  • 2 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信