7

我想使用 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, '', ',');
4

2 回答 2

13

你想四舍五入还是去掉小数?

将其舍入为 8933 将是:

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

要摆脱小数,您可以使用 floor (向下舍入):

echo utf8_encode(money_format('%.0n', floor($sales)));
于 2013-12-06T00:53:07.470 回答
0

由于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;
于 2022-01-25T17:18:00.323 回答