Django模板:带有所有小数位的输出浮点数

时间:2016-12-03 17:25:17

标签: python django

如何在django模板中输出这个数字(小数位数是可变的,我不提前知道):

x = 0.000015

1)

{{x}}

输出是:

1,5e-05

2)

{{x|stringformat:"f"}}

输出是:

0.000015

哪个没有本地化,应该有逗号!我需要输出本地化并保留所有小数位。

我无法相信django无法使用内置工具处理这么简单的任务。

更新: 我已经有了正确的设置:

LANGUAGE_CODE = 'ru'
USE_L10N = True

默认的Django输出适用于大多数浮点数,它只能在这个小数字上失败。它使用指数表示法输出,但我需要输出为带有所有小数位的浮点数(小数位数是可变的)。

3 个答案:

答案 0 :(得分:1)

如果您知道数字长度,可以尝试使用floatformat过滤器:

{{ x|floatformat:6 }}

其中6是小数部分的长度。

答案 1 :(得分:0)

由于错误的区域设置而发生这种情况 Django本地化使用当前的语言环境设置(Format Localization):

  

使用Django的格式化系统时,模板上的日期和数字将使用为当前区域设置指定的格式显示。

要修复它,你应该设置正确的语言环境,我假设它是pt_BR(由于逗号),但是你可以使用它正确的语言环境。

尝试在您的设置上添加此内容:

LANGUAGE_CODE = 'pt-BR'
USE_L10N = True

然后重新运行代码

答案 2 :(得分:0)

我找到了另一种解决方案,它完全正常。

首先将FloatField转换为DecimalField:

some_value = models.DecimalField(max_digits=20, decimal_places=15)

然后在模板中输出如下:

{{x.some_value.normalize}}

结果它输出0.000015为“0.000015”