Используйте формат php money и удалите цифры после десятичного знака для GBP

Я хочу отформатировать некоторые числа из моей аналитики в валюту, используя денежный формат в ГБ, но в качестве инструментальной панели, и не нужно быть таким точным, поэтому я хочу удалить пенс (цифры после десятичного знака) и округлить его, что помогает с макетом 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, '', ',');

2 ответа

Решение

Вы хотите округлить его или избавиться от десятичных?

Округлить его до 8933 было бы:

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

Чтобы избавиться от десятичных дробей, вы можете использовать floor (который округляется):

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;
Другие вопросы по тегам