Почему я получаю неправильную точность здесь? Я спросил 3 десятичных цифры после точки плавания.Десятичная точность python и django DecimalField
>>> from decimal import Decimal
>>> from decimal import getcontext
>>> getcontext().prec = 3
>>> Decimal(1.111) + Decimal(2.222)
Decimal('3.33') # Why not 3.333?
И второй вопрос, для Джанго DecimalField
, я определяю мое поле, как это:
value = models.DecimalField(max_digits=10, decimal_places=3)
делает это дает тот же результат, что и установка
getcontext().prec = 3
десятичного?
Так max_digits как getcontext(). Prec? Если да, то как я могу управлять десятичными знаками (количество цифр после запятой), с десятичным модулем? Что делает django для обеспечения decimal_places? – user3599803
@ user3599803 Я проверил исходный код, и Django (1.9) использует функцию 'django.db.backends.utils.format_number' с определением' format_number (value, max_digits, decimal_places) ', но возвращает строку, так как я THINK (не факт, мнение. Если вы посмотрите, сообщите мне), что десятичная дробь хранится в виде строки в базе данных. – makaveli
Фактически в моем db-MySQL десятичные знаки сохраняются как DECIMAL (10, 3). Так что не строка здесь, по крайней мере .. Во всяком случае, я все еще смотрю, как настроить десятичный объект decimal_places. Если есть способ, конечно, – user3599803