Как преобразовать число в строку, показывающую доллары и центы?
eg:
123.45 => '$123.45'
123.456 => '$123.46'
123 => '$123.00'
.13 => '$0.13'
.1 => '$0.10'
0 => '$0.00'
Как преобразовать число в строку, показывающую доллары и центы?
eg:
123.45 => '$123.45'
123.456 => '$123.46'
123 => '$123.00'
.13 => '$0.13'
.1 => '$0.10'
0 => '$0.00'
PHP также имеет money_format().
Вот пример:
echo money_format('$%i', 3.4); // echos '$3.40'
Эта функция на самом деле имеет множество опций, перейдите к документации, на которую я ссылаюсь, чтобы увидеть их.
Примечание: money_format не определен в Windows.
ОБНОВЛЕНИЕ: В руководстве по PHP: https://www.php.net/manual/en/function.money-format.php
ВНИМАНИЕ! Эта функция [money_format] объявлена УСТАРЕВШЕЙ, начиная с PHP 7.4.0. Крайне не рекомендуется полагаться на эту функцию.
Вместо этого загляните в NumberFormatter::formatCurrency.
$number = "123.45";
$formatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
return $formatter->formatCurrency($number, 'USD');
money_format('$%i', 3.4)
обрабатывает негативы не так, как предпочло бы большинство людей.
- person Ryan; 06.07.2018
Если вы просто хотите что-то простое:
'$' . number_format($money, 2);
'$' . number_format($money, 2, '.', '');
- person Justin Anderson; 18.04.2012
Я пробовал money_format()
, но у меня это вообще не сработало. затем я попробовал следующий. это сработало идеально для меня. надеюсь, это сработает и для вас.. :)
вы должны использовать этот
number_format($money, 2,'.', ',')
он покажет число денег в денежном формате до 2 знаков после запятой.
В PHP и C++ вы можете использовать функцию printf().
printf("$%01.2f", $money);
Обратите внимание, что в PHP 7.4 функция money_format() устарела. Его можно заменить функциональностью intl NumberFormatter, просто убедитесь, что вы включили расширение php-intl. Это небольшое усилие, но оно того стоит, так как вы получаете широкие возможности настройки.
$f = new NumberFormatter("en", NumberFormatter::CURRENCY);
$f->formatCurrency(12345, "USD"); // Outputs "$12,345.00"
Быстрый способ, который все еще будет работать для версии 7.4, упоминается Darryl Hein:
'$' . number_format($money, 2);
В php.ini добавьте это (если оно отсутствует):
#windows
extension=php_intl.dll
#linux
extension=php_intl.so
Затем сделайте следующее:
$amount = 123.456;
// for Canadian Dollars
$currency = 'CAD';
// for Canadian English
$locale = 'en_CA';
$fmt = new \NumberFormatter( $locale, \NumberFormatter::CURRENCY );
echo $fmt->formatCurrency($amount, $currency);