我正在看到twig 2尝试使用number_format的一些奇怪的行为。
我从服务器获取每个项目的3个值:成本,乘数和数量。由于乘数我乘以数量时得到的是偏差,所以我把价格放在一个变量中:
{% set price = (item.buyPrice * item.markup_mult)|number_format(2) %}
那很好,我在下一行使用它,这是正确的。问题是当我尝试使用另一个变量中的价格值和第二个格式时:
{% set lineTotal = (price * quantities[item.collection_id][item.item_id])|number_format(2) %}
像这样,我会得到2.00的值,因为我的lineTotal应该是2400的东西。
3注意事项:
我也看了
这是一个已知的错误,还是我做错了什么?谢谢
number_format
输出一个字符串,这意味着您信任自动类型转换。默认情况下,当您使用number_format
时,它会自动插入数千个分隔符(在美国,逗号)。这可能搞砸了你的数学并解释了为什么价格高于999.99美元只是一个问题。
而不是使用number_format
,你需要使用round()
。
$number = 1000.999
echo number_format($number,2); // 1,001.00
echo round($number,2); // 1001
$number = 1000.99
echo number_format($number,2); // 1,000.99
echo round($number,2); // 1000.99