TypeError: неподдерживаемый тип(ы) операнда для /: 'float' и 'decimal.Decimal'
Рассмотрим мой файл views.py
def ajax_add_other_order_item(request,id):
client = request.user.client
def _convert(from_currency, to_currency, price):
custom_rate_obj = client.custom_rates.filter(currency=to_currency).first()
if custom_rate_obj is None or custom_rate_obj.exchange_rate in (0, None):
custom_rate_obj = ExchangeRates.objects.latest('created')
return custom_rate_obj.convert(from_currency, to_currency, price)
if request.method == 'POST':
unit = request.POST.get('u_price') or 0
purchase_price = _convert(currency, 'GBP', float(unit))
try:
exchange_price = float(unit)/purchase_price
except ZeroDivisionError:
exchange_price = 0
Здесь я получаю ошибку TypeError: unsupported operand type(s) for /: 'float' и 'decimal.Decimal' Пожалуйста, помогите решить эту проблему
Вы не можете разделить float
на Decimal
, так как десятичная дробь имеет фиксированное количество цифр, в то время как float
использует кодировку IEEE-754 и не имеет фиксированного количества цифр.
Вы можете преобразовать число в Decimal
, а затем выполнить деление соответствующим образом:
from decimal import Decimal
try:
exchange_price = Decimal(unit)/purchase_price
except ZeroDivisionError:
exchange_price = Decimal(0)
from decimal import Decimal
...
exchange_price = Decimal(unit)/purchase_price