Prometheus Prometheus - 1 year ago 72
Python Question

unsupported operand type(s) for *: 'float' and 'Decimal'

I'm just playing around learning classes functions etc, So I decided to create a simple function what should give me tax amount.

this is my code so far...

class VAT_calculator:
A set of methods for VAT calculations.

def __init__(self, amount=None):
self.amount = amount
self.VAT = decimal.Decimal('0.095')

def initialize(self):
self.amount = 0

def total_with_VAT(self):
Returns amount with VAT added.
if not self.amount:
msg = u"Cannot add VAT if no amount is passed!'"
raise ValidationError(msg)

return (self.amount * self.VAT).quantize(self.amount, rounding=decimal.ROUND_UP)

My issue is I'm getting the following error:

unsupported operand type(s) for *: 'float' and 'Decimal'

I don't see why this should not work!

Answer Source

It seems like self.VAT is of decimal.Decimal type and self.amount is a float, thing that you can't do.

Try decimal.Decimal(self.amount) * self.VAT instead.