2 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
/執(zhí)行“真正的分裂”。結(jié)果是一個(gè)浮點(diǎn)數(shù),它沒(méi)有足夠的精度來(lái)表示確切的商。調(diào)用int無(wú)法逆轉(zhuǎn)精度損失。浮點(diǎn)數(shù)學(xué)和舍入中的錯(cuò)誤導(dǎo)致了差異。
//是整數(shù)除法——這就是你想要的:
>>> f = math.factorial(25)
>>> f/25
6.204484017332394e+23
>>> int(f/25)
620448401733239409999872
>>> math.factorial(24)
620448401733239439360000
>>> f//25
620448401733239439360000 # correct answer

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
你不能使用/操作和int()除法后。此代碼將舍入精確的除法。但是當(dāng)你使用factorialfor 24 時(shí),python 正在使用*操作。
>>> from math import factorial
>>> f25 = factorial(25)
>>> f25
# 620448401733239439360000
這里可以使用//
而不是/
操作。 請(qǐng)?jiān)诖颂幉榭床僮髡f(shuō)明。
>>> f24 = factorial(24)
620448401733239439360000
>>> f25 // 25
620448401733239439360000
添加回答
舉報(bào)