我想使用 GB 货币格式将分析中的一些数字格式化为货币,但由于它用于仪表板,不需要那么精确,所以我想删除便士(小数点后的数字)并将其四舍五入有助于 css 布局,我该怎么做?四舍五入到最接近的磅就可以了。
我的代码如下:
//set locale for currency
setlocale(LC_MONETARY, 'en_GB');
$sales = '8932.83';
echo utf8_encode(money_format('%n', $sales));
输出:£8,932.83
但是我如何将其舍入为仅输出 8,932 英镑,小数点后没有任何内容。
我想使用货币格式,因为有时数字为负数,在这种情况下,money_format 返回的数字如 -£8,932.83,这比 £-8,932 更可取(英镑和负号以错误的方式),这就是我使用 number_format 进行格式化时发生的情况像这样:
echo '£'.number_format($sales, 0, '', ',');
您想要四舍五入还是去掉小数点?
将其四舍五入为 8933:
echo utf8_encode(money_format('%.0n', $sales));
要去掉小数,您可以使用下限(向下舍入):
echo utf8_encode(money_format('%.0n', floor($sales)));
由于
money_format()
已在 PHP 7.4 中弃用并在 PHP 8.0 中删除,因此建议格式化货币的函数现在是 NumberFormatter::CURRENCY。
例如解决这个问题可以这样完成:
$sales = 8932.83;
$sales = (int)$sales;
$numFormat = new NumberFormatter("en_GB", NumberFormatter::CURRENCY);
$sales = $numFormat->formatCurrency($sales, "EUR");
$sales = str_replace('.00', '', $sales);
echo $sales;
您可以这样做:
$sales = 454.425;
$formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY);
$formatter->setAttribute(NumberFormatter::FRACTION_DIGITS, 0);
return $formatter->formatCurrency($sales, 'EUR');