首页 > 解决方案 > Twig Number Format 将 double 转换为 int

问题描述

我正在尝试打印两个数字之间的差异。

直接打印时,两个数字都有一个分配给它们的值,并有一个逗号作为十进制分隔符:

{{ vals[1] }} --> 7,00
{{ vals[2] }} --> 6,63

为了真正能够用这些数字进行计算,我将,使用. 但是,当我现在直接打印这些数字时,我得到一个 int 值.|number_format (2, '.', ',')

{{ vals[1]|number_format (2, '.', ',') }} --> 7.00
{{ vals[2]|number_format (2, '.', ',') }} --> 6.00

因此试图计算这些值的差异,我只得到 int 值作为回报。

{% set diff = vals[1]|number_format(2, '.', ',') - vals[2]|number_format(2, '.', ',') %} --> 1.00

标签: twig

解决方案


使用 twigsnumber_format是直接映射到number_format(使用类型转换):

return number_format((float) $number, $decimal, $decimalPoint, $thousandSep);
                     ^^^^^^^

参考:https ://github.com/twigphp/Twig/blob/3.x/src/Extension/CoreExtension.php#L569


你提供的是一个 string "6,63",所以最终传递给本 number_format的是:6.00因为类型转换结果。

参考:https ://3v4l.org/Md12f


因此,如果您想number_format在视图中使用,请确保传递正确int的 s 或floats。否则,值作为字符串并使用字符串操作方法(如您的答案所示)。


推荐阅读