我正在寫一個函數從數字中提取小數點。忽略異常及其語法,我正在使用2.5.2(默認Leopard版本)。我的功能還沒有處理0的。我的問題是,該函數會產生一定數量的隨機錯誤,我不明白原因。代碼後我會發布錯誤讀數。從Python中的數字中提取小數點
功能:
def extractDecimals(num):
try:
if(num > int(num)):
decimals = num - int(num)
while(decimals > int(decimals)):
print 'decimal: ' + str(decimals)
print 'int: ' + str(int(decimals))
decimals *= 10
decimals = int(decimals)
return decimals
else:
raise DecimalError(num)
except DecimalError, e:
e.printErrorMessage()
異常類:
class DecimalError(Exception):
def __init__(self, value):
self.value = value
def printErrorMessage(self):
print 'The number, ' + str(self.value) + ', is not a decimal.'
這裏是誤差輸出WH恩我輸入數字1.988:
decimal: 0.988
int: 0
decimal: 9.88
int: 9
decimal: 98.8
int: 98
decimal: 988.0
int: 987
decimal: 9880.0
int: 9879
decimal: 98800.0
int: 98799
decimal: 988000.0
int: 987999
decimal: 9880000.0
int: 9879999
decimal: 98800000.0
int: 98799999
decimal: 988000000.0
int: 987999999
decimal: 9880000000.0
int: 9879999999
decimal: 98800000000.0
int: 98799999999
decimal: 988000000000.0
int: 987999999999
decimal: 9.88e+12
int: 9879999999999
decimal: 9.88e+13
int: 98799999999999
decimal: 9.88e+14
int: 987999999999999
9879999999999998
我不知道爲什麼這個錯誤被彈出。希望你們能幫助我。
感謝所有人的幫助。正如你們所指出的那樣,我可以更好地完成這個項目,但是我對結果並不感興趣,並且對我一路上學到的東西更感興趣。這就是爲什麼我不使用Python的所有內置功能的原因之一。感謝您的答案。 – dbmikus 2009-10-25 16:25:15