【发布时间】:2013-08-02 03:11:57
【问题描述】:
我想在数据库中保存 10 位小数,但在 GUI 中只显示 2 位小数。
数据类型无关紧要。
有什么简单的方法吗?
谢谢 亨里克
【问题讨论】:
-
是否有舍入?
标签: django python-2.6
我想在数据库中保存 10 位小数,但在 GUI 中只显示 2 位小数。
数据类型无关紧要。
有什么简单的方法吗?
谢谢 亨里克
【问题讨论】:
标签: django python-2.6
如果数据类型无关紧要,最简单的方法是将其作为文本存储在数据库中,然后在显示时解析数量。
>>> silly = '12345.6789098765'
>>> silly[:silly.rfind('.')+3]
'12345.67'
稍微高级一点;假设您不需要精度:
>>> "{0:0.2f}".format(float(silly))
'12345.68'
【讨论】:
答案实际上是双重的。
如何存储数据?
不要将它存储为 CharField 或其他东西。只需将其存储为 DecimalField 或 FloatField。
models.DecimalField(..., max_digits=20, decimal_places=10)
如何只显示两位小数?
使用模板标签floatformat,它将完整值作为输入并输出一个以所需小数位数四舍五入的小数。在您的情况下,这将是{{ value|floatformat:2 }}。
请注意,浮点数和十进制字段是not the same。
[感谢Burhan Khalid 指出不需要自定义模板标签]
【讨论】:
floatformat