2013-02-08 97 views
0

我得到以下错误:不能将float转换为Decimal。首先转换浮动到一个字符串

02/08 09:15:45> Decimal price: 0.00

02/08 09:15:45> Decimal price = None

TypeError: Cannot convert float to Decimal. First convert the float to a string

这里是我的代码:

  s.price = Decimal("%.2f" % (float(request.data['subscription_price']))) 
      log('Decimal price: %s' % s.price) 

      if s.price == Decimal("0.00"): 
       s.price = None 
       log('Decimal price = None') 

任何想法什么我做错了吗?我试图通过“if s.price == Decimal(”0.00“)来避免在数据库中保存0.00:”......无济于事。

+3

这个代码可以”由于在'Decimal price = None'日志语句之后没有代码,所以t会产生您输出的结果。也应该有一个追溯。 – 2013-02-08 17:30:23

+2

您包含的代码片段不会创建此错误 - 错误可能是由后面的代码引起的。 – dgel 2013-02-08 17:32:37

回答

0

如果要转换浮点数保留两位小数,这是工作的代码为十进制:

import Decimal 
In [10]: a = 7.3656 
In [11]: Decimal(a).quantize(Decimal('.01')) 
Out[11]: Decimal('7.37') 

更多信息有关与十进制数字,你可以在这里找到工作: http://docs.python.org/2/library/decimal.html