Используйте формат 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;