twig - 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
解决方案
使用 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
因为类型转换结果。
因此,如果您想number_format
在视图中使用,请确保传递正确int
的 s 或float
s。否则,将值作为字符串并使用字符串操作方法(如您的答案所示)。
推荐阅读
- error-handling - 如何处理 knex 中的错误
- c++ - 为什么这些无锁引用计数实现不会爆炸(或者它们会爆炸)?
- google-apps-script - 是否需要将 setActiveCell 替换为 getActiveCell 或 setActiveRange?
- java - 在 lib 中找不到工件 com.cache:mycache:jar:1.0-SNAPSHOT
- json - 如何访问此结构中的某些值
- dataframe - 如何使用 CLI 或 Databricks API 监控 Databricks 作业以获取有关所有作业的信息
- c++ - std::enable_if 过滤掉 char* 类型的参数
- arrays - 需要通过打字稿获取数组子数组的索引吗?
- sql - 每个客户的第二个最小值
- python - Mysql引用对象问题|| python中的Mysql类