Python/Django中的十进制数

8 投票
1 回答
18604 浏览
提问于 2025-04-18 11:50

我正在尝试往数据库里插入数据,但似乎遇到了小数的问题。

我有 latitudelongitude,比如说像下面这样的例子:

latitude = models.DecimalField(max_digits=30, decimal_places=15)

然后,当我尝试插入数据时,我写了:

Place(name="center", description="study center", latitude=41.214555, longitude=2.121451)

但是我收到这个错误:"quantize result has too many digits for current context"

我应该能使用这些数字,对吧?我不明白为什么会出现这个错误。如果有人能帮我,我会非常感激。

1 个回答

9

考虑这个模型:

class Place(models.Model):
    name = models.TextField()
    description = models.TextField()
    longitude = models.DecimalField(max_digits=30, decimal_places=15)
    latitude = models.DecimalField(max_digits=30, decimal_places=15)

这个应该可以正常工作(允许的最大数字和小数位数):

p = Place(
    name='Name',
    description='Description',
    latitude=0123456789012345.0123456789012345,
    longitude=0123456789012345.0123456789012345
)
p.save()

而这个应该会失败(超出限制的值):

p = Place(
    name='Name',
    description='Description',
    latitude=01234567890123456.01234567890123456,
    longitude=01234567890123456.01234567890123456
)
p.save()

在修改了你的Django代码后,确保相应地迁移或更改数据库。

撰写回答