使用 php 货币格式并删除英镑小数点后的数字

问题描述 投票:0回答:3

我想使用 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, '', ',');
php rounding money-format
3个回答
13
投票

您想要四舍五入还是去掉小数点?

将其四舍五入为 8933:

echo utf8_encode(money_format('%.0n', $sales));

要去掉小数,您可以使用下限(向下舍入):

echo utf8_encode(money_format('%.0n', floor($sales)));

1
投票

由于

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;

0
投票

您可以这样做:

$sales = 454.425;
$formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY);
$formatter->setAttribute(NumberFormatter::FRACTION_DIGITS, 0);
return $formatter->formatCurrency($sales, 'EUR');
© www.soinside.com 2019 - 2024. All rights reserved.