[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Форматирование цены
Страницы: 1, 2, 3
Gigabit
Нужно из записи 1984,2376 сделать 1984,23

то есть удалить последние символы, или второй вариант округлить. это цена копейки не бывают четырехзначными, вот и пытаюсь сделать их 2х.
Пробовал


number_format($cena, 2, ',', '');

выводит после запятой два ноля то есть так 1984,00

пробовал
 
setlocale(LC_MONETARY, 'ru_RU');
$maney = $cena;
$maney1 = money_format("%i", $maney);


вывел ошибку
Fatal error: Call to undefined function money_format() in Z:\home\domain.ru\www\script.php on line 68

есть какие нибудь варианты округлить или вырезать после 2х символов идущие после запятой и только если они являются цифрами.. типа так))
Placido
round()
Gigabit
А как его правильно использовать??? Я его тоже пробывал но он у меня выводит все цифра до запятой, а все что после не отображает пример вот так:
начальное значение 1984,2376
при помощи $maney1 = round($maney, 2); выводит 1984.
Aeq
$money = '1984,2376';
$fmt = new NumberFormatter('ru_RU.UTF-8', NumberFormatter::DECIMAL);
echo $fmt->format(round($fmt->parse($money), 2));


возможные локали за=овисят от оси. в частности у меня нужно обязательно дописывать .UTF-8. список допустимых локалей в вашей оси можно посмотреть так:
locale -a

это на линуксях.
Gigabit
чет я не понял что вы написали...
Gigabit
можно простым примером?))
Aeq
$money = '1984,2376';
# создаем форметтер чисел с десятичной дробной частью в нужной локали
$fmt = new NumberFormatter('ru_RU.UTF-8', NumberFormatter::DECIMAL);
$money_float = $fmt->parse($money); # парсим нашу строку в обычных пэхэпэшный float
$money_rounded = round($money_float, 2); # округляем до двух знаков
$money_rounded_formatted = $fmt->format($money_rounded); # форматируем обратно в соответствии с локалью
echo $money_rounded_formatted;
Aeq
в первом посте вы пробовали локаль ru_RU, я вам уточнил что для php может быть не достаточно прописать локаль ru_RU, нужно еще кодировку добавить через точку. что можно использовать в качестве локали нужно смотреть в locale -a, т.к. зависит от установленных локалей в оси и от настроек
Aeq
для работы класса NumberFormatter http://www.php.net/manual/ru/class.numberformatter.php возможно придется установить модуль intl, который в php >= 5.3 должен присутствовать.
Aeq
ну и конечно можно сделать проще
echo round(str_replace(',', '.', $money), 2);

:lol:
Gigabit
Цитата

ну и конечно можно сделать проще

echo round(str_replace(',', '.', $money), 2);

спасибо пример помог
Aeq
а с NumberFormatter не помог?
Gigabit
не смог разобраться...))
Aeq
а что там разбираться? я вроде рабочий пример дал а не абстрактные размышления
Lumix
Цитата (Gigabit @ 26.11.2013 - 00:26)
Нужно из записи 1984,2376 сделать 1984,23


Вместо запятой поставь точку, и будет счастье. Цена кажется указывается только с точкой
$cena = 1984.2376;
echo number_format($cena, 2, '.', '');

результат 1984.24 все как в аптеке
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.