如何在django模板中输出这个数字(小数位数是可变的,我不提前知道):
x = 0.000015
1)
{{x}}
输出是:
1,5e-05
2)
{{x|stringformat:"f"}}
输出是:
0.000015
哪个没有本地化,应该有逗号!我需要输出本地化并保留所有小数位。
我无法相信django无法使用内置工具处理这么简单的任务。
更新: 我已经有了正确的设置:
LANGUAGE_CODE = 'ru'
USE_L10N = True
默认的Django输出适用于大多数浮点数,它只能在这个小数字上失败。它使用指数表示法输出,但我需要输出为带有所有小数位的浮点数(小数位数是可变的)。
答案 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”