我只是在玩学习类函数等,所以我决定创建一个简单的函数,应该给我什么税额.
到目前为止这是我的代码.
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)
Run Code Online (Sandbox Code Playgroud)
我的问题是我收到以下错误:
不支持的操作数类型*:'float'和'Decimal'**
我不明白为什么这不起作用!
Sam*_*uns 57
它似乎self.VAT是decimal.Decimal类型,self.amount是一个float你不能做的事情.
试试吧decimal.Decimal(self.amount) * self.VAT.
正如错误所说,你的问题是你试图将a乘以Decimalafloat
最简单的解决方案是重写任何引用以将其amount声明为Decimal对象:
self.amount = decimal.Decimal(float(amount))
并在initialize:
self.amount = decimal.Decimal('0.0')
另一种选择是在最后一行声明Decimal:
return (decimal.Decimal(float(self.amount)) * self.VAT).quantize(decimal.Decimal(float(self.amount)), rounding=decimal.ROUND_UP)
......但这看起来更加混乱.
| 归档时间: |
|
| 查看次数: |
61079 次 |
| 最近记录: |