Я пишу функцию для извлечения десятичных знаков из числа. Игнорируйте исключение и его синтаксис, я работаю над 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()
Exception Класс:
class DecimalError(Exception):
def __init__(self, value):
self.value = value
def printErrorMessage(self):
print 'The number, ' + str(self.value) + ', is not a decimal.'
Здесь выводится ошибка белый ан вход I число 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