Python 我能从Django DecimalField的平均值中得到一个小数点吗?

Python 我能从Django DecimalField的平均值中得到一个小数点吗?,python,django,decimal,floating-accuracy,django-aggregation,Python,Django,Decimal,Floating Accuracy,Django Aggregation,对models.DecimalField使用Avg聚合时,返回的值是浮点值,而不是十进制.decimal。这是因为我的特定数据库(在本例中是sqlite3)不支持将聚合值作为小数吗?如果是,是否有数据库可以这样做?有没有办法解决这个问题(也就是说,有办法把数值恢复为十进制),这样就可以进行精确的十进制计算(同样,无需将float转换为str,然后再转换为decimal.decimal) 注意:我不是在和那些认为“足够准确”与“准确”相同的人打架,也不是在讨论星舰企业号由于错误的、基于浮点数的算法

models.DecimalField
使用
Avg
聚合时,返回的值是
浮点值,而不是
十进制.decimal
。这是因为我的特定数据库(在本例中是sqlite3)不支持将聚合值作为小数吗?如果是,是否有数据库可以这样做?有没有办法解决这个问题(也就是说,有办法把数值恢复为十进制),这样就可以进行精确的十进制计算(同样,无需将
float
转换为
str
,然后再转换为
decimal.decimal

注意:我不是在和那些认为“足够准确”与“准确”相同的人打架,也不是在讨论星舰企业号由于错误的、基于浮点数的算法而崩溃的问题时煽动怒火。

从中,支持的数据类型是
null
integer
real
(实际上是
float
)、
text
blob
。基于此,我希望引擎将任何输入的
decimal.decimal
转换为
real
,然后将其作为
float
返回给您,因为它不希望将其转换为超出其精度的值


大多数实际数据库(我几乎不考虑QuLLITE的任何一个原型)支持十进制数据类型。我知道。至于它们是否返回

decimal.decimal
而不是
float
,我不能告诉你,不幸的是,我还没有对它们的准确性进行调查,
float
对我来说已经足够好了。不过这是一个很好的开始。

我只是在谷歌上搜索了
starship enter基于浮点数的算术上升
。无论如何,在PostgreSQL上我也得到了浮点数。这是一个奇怪的特殊注释。