當我計算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

波斯汪
TA貢獻1811條經驗 獲得超4個贊
你不能使用/操作和int()除法后。此代碼將舍入精確的除法。但是當你使用factorialfor 24 時,python 正在使用*操作。
>>> from math import factorial
>>> f25 = factorial(25)
>>> f25
# 620448401733239439360000
這里可以使用//
而不是/
操作。 請在此處查看操作說明。
>>> f24 = factorial(24)
620448401733239439360000
>>> f25 // 25
620448401733239439360000
添加回答
舉報
0/150
提交
取消