2013-02-08 72 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