gpt4 book ai didi

python - DecimalField 将零转换为 0E-10

转载 作者:太空狗 更新时间:2023-10-29 18:03:05 26 4
gpt4 key购买 nike

Django 1.6、Python 2.7.5+、PostgreSQL 9.1、Linux。

我在模型中定义了几个小数字段,如下所示:

min_inclusive = models.DecimalField(_('minimum inclusive'), max_digits=19,
decimal_places=10,
help_text=_("Enter the minimum (inclusive) value for this concept."),
null=True, blank=True)

通过管理界面,当我输入 0(零)并保存对象时,我得到 0E-10 作为值。

那么,为什么它不只存储并显示一个零呢?

文档没有指定 decimal_places 是强制的还是最大数。

显示此内容是因为需要 10 个位置吗?如果是这样,使用默认表单小部件 TextInput,在我看来应该只是扩展到该大小或至少滚动到该大小。

在 PostgreSQL 中,它存储为 0.0000000000

最佳答案

我也遇到过这个问题,发现实际上一切正常。在 Python 中,如果您实际上定义了类似这样的 Decimal("0.0000000000"),您将在控制台中看到:

>>> Decimal("0.0000000000")
Decimal('0E-10')

在我的情况下,我从 SQLite3 后端转换为 PostgreSQL 用于生产。在 SQLite 中一切正常,因为它没有明确显示(或存储)所有十进制数字。因此,如果您在 SQLite 数字字段中插入 0 然后选择它,您将得到 0

但是如果您在 PostgreSQL 数字字段中插入 0,它将对小数点进行零填充并插入 0.0000000000。因此,当 Python 将其放入 Decimal 中时,您将看到 Decimal("0E-10")

更新 - 已在 Django 1.8 中修复

关于python - DecimalField 将零转换为 0E-10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com