【发布时间】:2013-04-12 21:33:01
【问题描述】:
我只是在学习类函数等,所以我决定创建一个简单的函数来计算税额。
这是我目前的代码。
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)
我的问题是我收到以下错误:
* 不支持的操作数类型:'float' 和 'Decimal'**
我不明白为什么这不起作用!
【问题讨论】:
-
也许设计师试图让你思考你真正想要的东西:浮点数或小数(更精确的精度定义),decimal.Decimal(0.77)*2 Decimal('1.540000000000000035527136788') 很好,整数自动提升为十进制;但是 >>> decimal.Decimal(0.77)*0.78 Traceback(最近一次调用最后):文件“
”,第 1 行,在 类型错误:不支持的操作数类型 *:'decimal.Decimal'和“浮动”会导致崩溃。如果你想要十进制结果,我想这会迫使你将浮点数转换为十进制,如果你不关心精度,则将小数转换为浮点数。