Я пишу функцию для извлечения десятичных чисел из числа. Проигнорируйте исключение и его синтаксис, я работаю над 2.5.2 (версия по умолчанию Leopard). Моя функция еще не обрабатывает 0. Моя проблема в том, что функция выдает случайные ошибки с определенными числами, и я не понимаю причину. Я опубликую сообщение об ошибке после кода.
Функция:
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.'
Вот вывод ошибки при вводе числа 1.988:
decimal: 0.988<br>
int: 0<br>
decimal: 9.88<br>
int: 9<br>
decimal: 98.8<br>
int: 98<br>
decimal: 988.0<br>
int: 987<br>
decimal: 9880.0<br>
int: 9879<br>
decimal: 98800.0<br>
int: 98799<br>
decimal: 988000.0<br>
int: 987999<br>
decimal: 9880000.0<br>
int: 9879999<br>
decimal: 98800000.0<br>
int: 98799999<br>
decimal: 988000000.0<br>
int: 987999999<br>
decimal: 9880000000.0<br>
int: 9879999999<br>
decimal: 98800000000.0<br>
int: 98799999999<br>
decimal: 988000000000.0<br>
int: 987999999999<br>
decimal: 9.88e+12<br>
int: 9879999999999<br>
decimal: 9.88e+13<br>
int: 98799999999999<br>
decimal: 9.88e+14<br>
int: 987999999999999<br>
9879999999999998
Я не знаю, почему эта ошибка появляется. Надеюсь, вы, ребята, сможете мне помочь.