75

我正在使用 Flask/Jinja2 模板来显示一个使用|float过滤器的数字。

这是我的代码

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

输出有点尴尬:

17/189 (8.99470899471%)

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

期望的输出:

17/189 (8.99%)
4

4 回答 4

90

它变得非常简单:

我的代码:

{% 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上找到参考资料

于 2012-06-29T10:37:23.387 回答
76

您可以使用round将 a 格式化为float给定的精度。

从文档中提取:

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也会返回 a。如果您需要一个实整数,请将其通过管道传输int

{{ 42.55|round|int }}
    -> 43
于 2014-05-31T09:49:30.457 回答
29

这是一种方法::

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

随心所欲地调整它:)

于 2018-02-11T00:59:00.253 回答
-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)); 
}
于 2017-07-15T13:30:39.760 回答