|
 |
money_format (PHP 4 >= 4.3.0, PHP 5) money_format -- Форматирует число как денежную величину Описаниеstring money_format ( string format, float number )
money_format() форматирует число
number как денежную величину.
Эта функция вызывает функцию strfmon языка C, но позволяет
преобразовать только одно число за один вызов.
Замечание:
Функция money_format() определена только если
в системе присутствует функция strfmon. Например, в Windows она
отсутствует, поэтому money_format() не определена
в Windows.
Описание формата состоит из:
символа % необязательных флагов необязательной ширины поля необязательной точности до запятой необязательной точности после запятой обязательного описателя преобразования
Замечание:
На работу этой функции влияет установка категории
LC_MONETARY текущей локали.
Перед использованием этой функции установите нужную локаль с помощью
setlocale().
Символы перед и после описания формата возвращаются без изменений.
Пример 1. Пример использования money_format()
Проиллюстрируем применение этой функции для различных локалей и
разных описаний формата.
<?php
$number = 1234.56;
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
setlocale(LC_MONETARY, 'it_IT');
echo money_format('%.2n', $number) . "\n";
$number = -1234.5672;
setlocale(LC_MONETARY, 'en_US');
echo money_format('%(#10n', $number) . "\n";
echo money_format('%=*(#10.2n', $number) . "\n";
setlocale(LC_MONETARY, 'de_DE');
echo money_format('%=*^-14#8.2i', 1234.56) . "\n";
setlocale(LC_MONETARY, 'en_GB');
$fmt = 'The final value is %i (after a 10%% discount)';
echo money_format($fmt, 1234.56) . "\n";
?>
|
|
См. также описание функций setlocale(),
number_format(),sprintf(),
printf() и sscanf().
money_format
richard dot selby at uk dot clara dot net
17-Feb-2006 07:02
Double check that money_format() is defined on any version of PHP you plan your code to run on. You might be surprised.
For example, it worked on my Linux box where I code, but not on servers running BSD 4.11 variants. (This is presumably because strfmon is not defined - see note at the top of teis page). It's not just a windows/unix issue.
admin at sellchain dot com
12-Jan-2006 09:04
If you are just looking to format a counter or something that does not represent money, and you want to avoid rounding, etc, just use this on a NON-DECIMAL NUMBER.
<?
echo "2406 is now " . Thousands(2406);
function Thousands($amt) {
return number_format($amt,0,'',',')
}
?>
www dot spam at whoah dot net
25-Aug-2004 06:33
For users of Windows looking for basic number formatting such as decimal places, decimal seperator and thousands seperators use number_format() instead.
number_format
The Mighty Will
25-Jan-2004 12:14
I didn't see it mentioned here, yet it threw me for a loop. Once you use this function, you can no longer use these formatted numbers to perform normal math operations like addition. This may be true with other functions as well, but I personally have experience with this scenario.
Example:
$curOne = money_format('%#4n',123.05);
#returns $ 123.05
$curTwo = money_format('%#4n',41.95);
#returns $ 41.95
echo $curOne + $curTwo;
#this will return $ 0.00
Instead:
$curOne = 123.05;
#returns 123.05
$curTwo = 41.95;
#returns 41.95
echo money_format('%#4n',$curOne + $curTwo);
#this will return $ 165.00
stefan at ioc dot nl
15-Jan-2004 09:31
To display EUR or the euro-sign, try this:
<?php
setlocale(LC_ALL, 'nl_NL@euro');
echo money_format('%i', 10000);
echo "<br>";
echo htmlentities(money_format('%.2n', 10000),ENT_QUOTES,'ISO-8859-15');
?>
rs98101 at yahoo dot com
13-Jun-2003 11:54
For applications where precision matters (i.e. anything where accountants and auditors get involved) I would not recommend using floats to keep track of money. You will notice hard to trace rounding errors permeated through your application. Use this function only for values where precision is not a must.
| |