Ввиду ошибок округления не следует использовать float для денежных вычислений:
x = float('40.80')
a = int(x)
b = int(100 * (x - a))
print(a, b) # => 40 79
Используйте decimal.Decimal вместо float:
from decimal import Decimal
x = Decimal('40.80')
a = int(x)
b = int(100 * (x - a))
print(a, b) # => 40 80
Ну или банально:
a, b = map(int, '40.80'.split('.'))
print(a, b) # => 40 80
В реальных задачах следует предусмотреть, что:
1) Число может быть отрицательным;
2) Decimal separator в текущей локали может быть не точкой.