1
为什么我在这里得到错误的精度?我已经在浮点后询问了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?
而第二个问题,Django的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)使用'format_number(value,max_digits,decimal_places)'定义了'django.db.backends.utils.format_number'函数,但是返回一个字符串,因为我THINK不是一个事实,一个观点,如果你查看它,让我知道)小数点存储为数据库中的一个字符串。 – makaveli
实际上,在我的db-MySQL中,小数存储为DECIMAL(10,3)数据类型。所以至少在这里不是一个字符串..无论如何,我仍然看看如何配置Decimal对象decimal_places。如果有方法 – user3599803