我想用10位小数保存在数据库中,但在GUI中只显示2位小数。
数据类型无关紧要。
有什么简单的方法可以做到这一点吗?
谢谢Henrik
答案实际上是双重的。
-
如何存储数据?
不要将其存储为CharField或其他什么。只需将其存储为DecimalField或FloatField即可。
models.DecimalField(..., max_digits=20, decimal_places=10)
-
如何只显示两个小数?
使用模板标记
floatformat
,该标记将整数值作为输入,并输出一个按所需小数位数四舍五入的小数。在您的情况下,这将是{{ value|floatformat:2 }}
。
请注意,浮点字段和十进制字段不相同。
[感谢Burhan Khalid指出不需要自定义模板标签]
如果数据类型无关紧要,最简单的方法是将其作为文本存储在数据库中,然后在显示时解析金额。
>>> silly = '12345.6789098765'
>>> silly[:silly.rfind('.')+3]
'12345.67'
稍微先进一点;假设你不需要精度:
>>> "{0:0.2f}".format(float(silly))
'12345.68'