假設我有一個程序與功能長整型太大,轉換成浮動
def fakultaet(x):
if x>1:
return(x* fakultaet(x-1))
else:
return(1)
返回給定數的階乘,我需要計算
1.0/fakultaet(200)
,但我得到的溢出錯誤:long int too large to convert to float
。
我該如何解決這個問題?
假設我有一個程序與功能長整型太大,轉換成浮動
def fakultaet(x):
if x>1:
return(x* fakultaet(x-1))
else:
return(1)
返回給定數的階乘,我需要計算
1.0/fakultaet(200)
,但我得到的溢出錯誤:long int too large to convert to float
。
我該如何解決這個問題?
你可以試試這個:
from decimal import Decimal
def fakultaet(x): # as you have it currently
if x>1:
return(x * fakultaet(x-1))
else:
return(1)
print Decimal(1.0)/fakultaet(200)
輸出:
1.267976953480962421753016371E-375
哦,還有,還有就是math
模塊中的factorial
功能已經,只是包括from math import factorial
頂部的文件來獲得訪問權限。
樣式註釋:'return'是一個語句,而不是一個函數,因此您通常不會在返回的對象周圍編寫括號。你會寫'return x * fakultaet(x-1)'和'return 1'。請參閱Python文檔中的隨機示例:http://docs.python.org/dev/tutorial/controlflow.html#default-argument-values – jorgeca