php money_format - PullRequest
       17

php money_format

3 голосов
/ 08 октября 2009

Я пытаюсь удалить .00 в конце цены

 function getMoney($mon) {
  setlocale(LC_MONETARY, 'en_US');
  return money_format('%.2n', $mon);
 }

Спасибо,

Ответы [ 5 ]

15 голосов
/ 08 октября 2009

Попробуйте использовать эту версию функции money_format ():

money_format('%.0n', $mon);

Согласно документации PHP на money_format (http://us.php.net/manual/en/function.money-format.php), создание строки формата "% .2n" приведет к отображению числа с десятичной точкой и двумя десятичными разрядами справа от десятичной точки, нет независимо от того, что такое центы, а затем отформатируйте число в соответствии с форматом национальной валюты локали.

Заменив его на «% .0n», вы всегда будете удалять десятичную дробь в конце денег. Конечно, это удалит десятичную дробь для всех значений, а не только для тех, которые имеют значение .00 в конце. Если вы хотите условно удалить .00, проверьте, имеет ли значение $ mon дробную часть, и если это так, отобразите его с «% 0.2n».

4 голосов
/ 08 октября 2009

Кажется, что при первом осмотре ваш код запрашивает , чтобы центы отображались с помощью '%.2n', но я замечаю следующую ссылку на ссылку на функцию PHP который включает предупреждение о set_locale() в Debian.

Вы не используете Debian?

0 голосов
/ 11 ноября 2010

nickf является правильным (вроде), а ben неправильным, ваша переменная с плавающей точкой может иметь дробную часть, но после форматирования она может округляться до 0 центов, поэтому ее всегда следует удалять после факта. код никфа должен быть:
preg_replace('/\.00$/', '', money_format('%.2n', $mon))

0 голосов
/ 08 октября 2009

То есть вы хотите удалить центы, но только если нет центов? Всегда есть быстрое и грязное выражение:

preg_replace("/\\.00^/", "", money_format('%.2n', $mon))
0 голосов
/ 08 октября 2009

Пожалуйста, проверьте Руководство по PHP :

Вам необходимо установить правильную точность как таковую:

function getMoney($mon) {
  setlocale(LC_MONETARY, 'en_US');
  return money_format('%.0n', $mon);
 }
...