14

我在树枝上有一个部门。有时,结果可能是小数,我需要总是有一个四舍五入的结果。

前任。

7 / 2 = 3.5

我想拥有

7 / 2 = 4

我知道如何在树枝中使用地板:

7 / 2 | floor = 3

但这是四舍五入到下位,而不是上位。

我也知道我可以使用 number_format

7 / 2 | number_format(0, '.', ',') = 3

所以这也将占用下位数。

关于如何告诉树枝取高位数字的任何想法?

这可以在控制器(Symfony)中完成,但我正在寻找树枝版本。

谢谢你。

4

8 回答 8

18

更新

在 1.15.0+ 版本上,round过滤器可用。

{{ (7 / 2)|round(1, 'ceil') }}

http://twig.sensiolabs.org/doc/filters/round.html


您可以扩展 twig 并编写自定义函数,如此处所述

它会是这样的:

<?php
// src/Acme/DemoBundle/Twig/AcmeExtension.php
namespace Acme\DemoBundle\Twig;

class AcmeExtension extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            'ceil' => new \Twig_Filter_Method($this, 'ceil'),
        );
    }

    public function ceil($number)
    {
        return ceil($number);
    }

    public function getName()
    {
        return 'acme_extension';
    }
}

所以你可以在树枝中使用它:

(7 / 2) | ceil
于 2013-02-01T13:01:17.293 回答
10

1.15.0 版中的新功能:在 Twig 1.15.0 中添加了圆形过滤器。

例子:{{ 42.55|round(1, 'ceil') }}

圆形过滤器有两个可选参数;第一个指定精度(默认为0),第二个指定舍入方法(默认为常用)

http://twig.sensiolabs.org/doc/filters/round.html

于 2015-02-17T14:30:50.950 回答
4

不知道它在以前的版本中是怎样的,但在 Symfony 2.2.1 中,您必须在计算周围使用括号(假设您创建了扩展):

(7 / 2)|ceil

显然7 / 2|ceil是一样的,7 / (2|ceil)因为它们都给出了相同的(错误的)结果,并且只有上述解决方案对我有用。

于 2013-05-21T11:32:30.290 回答
2

你试过7 // 2吗?

文档页面可能很有用。

于 2013-02-01T12:51:27.147 回答
2

http://twig.sensiolabs.org/doc/filters/round.html

从 Twig 1.15.0 开始,您可以使用“round”过滤器并将“ceil”作为第二个参数传递。解决方案如下所示:

{{ (7 / 2)|round(0, 'ceil') }}

显示的格式化数字绝对属于视图,而不是控制器。这将被视为显示逻辑——这与控制器中的业务逻辑不同,控制器中的业务逻辑应尽可能保持干净。

于 2014-03-17T18:40:09.470 回答
2

圆形过滤器将第一个参数作为精度。因此,回答 OP 问题的正确表述是:

{{ (7 / 2)|round(0, 'ceil') }}

而不是

{{ (7 / 2)|round(1, 'ceil') }}

http://twig.sensiolabs.org/doc/filters/round.html

于 2019-04-09T15:55:29.717 回答
0

如果您使用的是 1.12.0 或更高版本,则可以使用三元运算符并执行以下操作:

{{ ((7 / 2) > (7 // 2)) ? (7 // 2) + 1 : (7 // 2) }}

它不是那么“优雅”,但它仍然有效。

于 2013-10-09T20:39:27.413 回答
-5

http://php.net/manual/en/function.ceil.php

使用php的天花板功能做你想做的事

于 2013-02-01T12:54:22.223 回答