У меня есть некоторые значения цены для отображения на моей странице.
Я пишу функцию, которая берет цену поплавка и возвращает форматированный валютный вал с кодом валюты тоже.
Например, fnPrice(1001.01)
должен печатать $ 1,000.01
У меня есть некоторые значения цены для отображения на моей странице.
Я пишу функцию, которая берет цену поплавка и возвращает форматированный валютный вал с кодом валюты тоже.
Например, fnPrice(1001.01)
должен печатать $ 1,000.01
Самый простой ответ: number_format()
.
echo "$ ".number_format($value, 2);
Если вы хотите, чтобы ваше приложение могло работать с несколькими валютами и стандартизованным форматом (1.000,00
для некоторых из нас, например, для европейцев), оно становится немного сложнее.
Существует money_format()
, но он не работает в Windows и полагается на setlocale()
, что, на мой взгляд, мусор, потому что он требует установки (произвольно названных) локальных пакетов на стороне сервера.
Если вы хотите серьезно интернационализировать свое приложение, рассмотрите возможность использования полномасштабной библиотеки интернационализации, такой как Zend Framework Zend_Locale и Zend_Currency.
с расширением intl в PHP 5.3+, вы можете использовать класс NumberFormatter:
$amount = '12345.67';
$formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY);
echo 'UK: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL;
$formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY);
echo 'DE: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL;
который печатает:
UK: €12,345.67
DE: 12.345,67 €
sprintf() - это функция PHP для всех видов форматирования строк http://php.net/manual/en/function.sprintf.php
Я использую эту функцию:
function formatDollars($dollars){
return '$ '.sprintf('%0.2f', $dollars);
}
Я построил эту небольшую функцию, чтобы автоматически форматировать что-либо в удобный формат валюты.
function formatDollars($dollars)
{
return "$".number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)),2);
}
Edit
Было указано, что это не показывает отрицательных значений. Я разбил его на две строки, чтобы упростить редактирование форматирования. Оберните его в скобки, если это отрицательное значение:
function formatDollars($dollars)
{
$formatted = "$" . number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)), 2);
return $dollars < 0 ? "({$formatted})" : "{$formatted}";
}
Для этого PHP имеет функцию money_format
. Читайте об этом здесь.
Вы можете использовать функцию числового формата. Для использования, пожалуйста, смотрите здесь