指定Django DecimalField的有效位数

时间:2016-09-06 23:02:50

标签: python django postgresql

Django documentation很清楚,DecimalFields是一个基于Python decimal module的固定精度十进制数。

如果我有12位有效数字的预先存在的数据,我应该如何充分模拟这个?

例如,这里是感兴趣的数据样本:

shape_leng    |  shape_area
--------------+--------------
1530.79895768 | 90408.0667370
1936.60719682 | 182948.426626
232.229916910 | 1961.07387818
298.135367400 | 1206.32979471
7492.74283181 | 351026.396309
2284.47421526 | 240449.624361
1190.40843206 | 85766.7212220
579.035061001 | 17493.1577514
2532.91949894 | 343607.358136
3332.89318722 | 709775.074538
3259.11802943 | 378845.260875
3482.11473711 | 727006.254061

有些条目只有6位小数,而有些条目只有9位或10位。由于这只是数据集中的一个样本,可以想象有些条目可能有更大范围的值。无论如何,每个条目都有12位数字和小数点。

在我的第一遍中,我将模型设置为:

shape_leng = models.DecimalField(max_digits=25, decimal_places=12, blank=True, null=True)
shape_area = models.DecimalField(max_digits=25, decimal_places=12, blank=True, null=True)

缺点是我现在允许最多25位数,即使我知道真正的max_digits只能是12或13。

有没有更好的方式来代表这个?某种可变精度数值类型,只需要科学风格,有效数字类型的精度?

0 个答案:

没有答案