0

次のエラーが表示されます。

02/08 09:15:45> 10 進値: 0.00

02/08 09:15:45> 10 進値 = なし

TypeError: float を Decimal に変換できません。最初にフロートを文字列に変換します

これが私のコードです:

            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 を保存しないようにハックを試みましたが、役に立ちませんでした。

4

2 に答える 2

0

浮動小数点数を小数点以下 2 桁の Decimal に変換する場合、これは動作するコードです。

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

ここで見つけることができる 10 進数の操作に関する詳細情報: http://docs.python.org/2/library/decimal.html

于 2013-02-08T18:14:24.893 に答える
0
if str(s.price) == str(Decimal("0.00")):
   s.price = None
   log('Decimal price = None')
于 2020-10-09T16:14:29.347 に答える