如何使用浮点过滤器在小数点后只显示两位数?

时间:2012-06-29 10:28:34

标签: flask wsgi jinja2

我使用Flask / Jinja2模板使用 | float 过滤器显示数字。

这是我的代码

{% set proc_err = nb_err|length / sum * 100 %}
({{proc_err|float}}%)

输出有点尴尬:

17/189 (8.99470899471%)

我正在寻找一种方法,将点后的地方限制为一个数字,例如2。

期望的输出:

17/189 (8.99%)

4 个答案:

答案 0 :(得分:62)

变得非常简单:

我的代码:

{% set proc_err = nb_err|length / sum * 100 %}
({{proc_err|float}}%)

可以改为:

{% set proc_err = nb_err|length / sum * 100 %}
({{'%0.2f' % proc_err|float}}%)

或使用 格式

({{'%0.2f'| format(proc_err|float)}}%)

参考可以在jinja2 github issue 70

上找到

答案 1 :(得分:47)

您可以使用roundfloat格式化为给定的精度。

摘自the docs

round(value, precision=0, method='common')

将数字四舍五入到给定的精度。第一个参数指定精度(默认为0),第二个参数指定舍入方法:

  • common向上或向下滚动
  • ceil总是四舍五入
  • floor总是向下舍入

如果您未指定使用方法common

{{ 42.55|round }}
    -> 43.0
{{ 42.55|round(1, 'floor') }}
    -> 42.5

请注意,即使舍入到0精度,也会返回float。如果您需要一个实数,请通过int

进行管道传输
{{ 42.55|round|int }}
    -> 43

答案 2 :(得分:7)

这是一种方法::

{{ "%.2f"|format(result) }}

随意调整它:)

答案 3 :(得分:-3)

(我假设您使用Ionic v2)

使用此前端代码:

<div *ngIf="device.usage > 0">
   {{ Round(device.usage)}} min  
</div>

并将以下函数放入.ts文件中:

Round(number):number
{
    return parseFloat(Number((number/1000) / 60).toFixed(2)); 
}
相关问题