【问题标题】:Django DecimalField generating "quantize result has too many digits for current context" error on save保存时 Django DecimalField 生成“量化结果对于当前上下文有太多数字”错误
【发布时间】:2013-12-04 02:16:40
【问题描述】:

我有一个类似的模型:

class ModelWithDecimal(models.Model):
    value = models.DecimalField(max_digits=2,decimal_places=2)

...但是当我尝试...

obj = ModelWithDecimal(value="1.5")
obj.save()

我在保存过程中收到quantize result has too many digits for current context 错误。不是应该没问题吗?小于 2 位,小数点后小于 2 位?

同样的错误发生在模型上:

class ModelWithDecimal(models.Model):
    value = models.DecimalField(max_digits=11,decimal_places=8)

...和尝试的实例...

obj = ModelWithDecimal(value="1005.7")
obj.save()

再一次,它似乎应该可以工作:总共只有 4 个数字(小于 11),小数点后只有 1 个(小于 8)。

怎么了?

【问题讨论】:

    标签: python django django-models decimal


    【解决方案1】:

    问题是每个实例都会消耗所有小数右边的decimal_places,无论那里是否有非零数字,只留下(max_digits - decimal_places) 数字作为左边的小数.

    所以对于DecimalField(max_digits=2,decimal_places=2),小数点左侧有 个数字的空间,“1.5”不适合。对于DecimalField(max_digits=11,decimal_places=8),小数点左侧只有 三个 位的空间,“1005.7”不适合。

    扩展您的max_digits,这些值将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2013-08-28
      • 2016-03-28
      相关资源
      最近更新 更多