округление цены и цифр спомощью функции смарти

3

нашёл в инструкции смарти кому понадобится

{$number = 23.5787446}

{$number}
{$number|string_format:"%.2f"}
{$number|string_format:"%d"}

результат
23.5787446
23.58
24

например у меня так вместе с вычитанием процентов и округлением до целого числа {shop_currency_html($product.price - ($product.price / 100 * 5)|string_format:"%d")}

15 комментариев

    • +1
      Петр Петр 6 февраля 2017 15:18 #

      а просто я думал что эта функция не округляет а просто скрывает значения после запятых

      |wa_format
      • +1

        Хвала документации, которая несмотря на все невзгоды продолжает расти ))))

        • +1
          Петр Петр 6 февраля 2017 15:38 #

          проверил |wa_format:"%d" работает :))))))))))))))))))))))

          видимо документацию писали великие программисты и им было не досуг писать документацию для простого человека

          вот вебасуст учитесь просто и понятно даже на русском есть http://www.smarty.net/docsv2/ru/language.modifier....

          • +1

            ну на самом деле в одном из методов есть ссылка на https://developers.webasyst.ru/cookbook/basics/cla...

            $format

            Формат возвращаемого значения. Строка с указанием формата должна начинаться с символа % и может состоять из следующих необязательных частей в указанном порядке:

            1. Точность отображаемого числа (количество знаков после запятой); указывается в виде числа, обозначающего количество символов после десятичной запятой. Если точность не указана, то по умолчанию отображаются 2 знака после десятичной запятой.
            2. Вид отображения (в виде числа, например, «123456» или словами, например, «сто двадцать три тысячи четыреста пятьдесят шесть»). Для числового отображения укажите i, для словесного — w. Словесная запись возвращает только целую часть числа, дробная часть отбрасывается. Если вид отображения не указан, то по умолчанию используется числовой вид отображения.
            3. Текстовое обозначение валюты, например, «руб.», «копеек» и т. п. Для добавления обозначения валюты укажите один из идентификаторов в фигурных скобках:
              • <code style="font-size: 12.96px;">{n}</code>: полное наименование валюты (например, «рублей»)
              • <code style="font-size: 12.96px;">{s}</code>: сокращенное обозначение валюты (например, «руб.»)
              • <code style="font-size: 12.96px;">{h}</code>: HTML-символ валюты; если у валюты нет HTML-символа, то по умолчанию используется формат <code style="font-size: 12.96px;">'s'</code>
              • <code style="font-size: 12.96px;">{f}</code>: наименование дробной части валюты (например, «копеек»)
              • <code style="font-size: 12.96px;">{c}</code>: код валюты (например, «RUB»).

            Я всё это к чему...........не нужно опускаться до личностей (до компаний). Это больше говорит не о них, а о Вас.

            • +1
              Петр Петр 6 февраля 2017 15:53 #

              хорошо я с вами согласен

              и все таки, я читал это все и не нашел такого "%d" я думал документация написана для тех кто сам хочет немного покодить, а не для разработчиков

              и вообще я видел много сообщений здесь кто спрашивал как округлить цифры, вот для них и написал

            • +1
              Петр Петр 6 февраля 2017 16:22 #

              стоп я ошибся не работает так |wa_format:"%d"

            • +1

              Для бухгалтерии подобные округления чреваты, округление сотых а именно

              2976,8207 = 2976,83 а не 2976,82

              ! должно всегда округлятся только в большую сторону, иначе налоговая в*** куда только вздумает! уже есть случаи.

              • +1
                Петр Петр 30 августа 2017 11:54 #

                как тогда сделать правельно

              • +1
                Петр Петр 30 августа 2017 12:34 #

                {$number = 2976.3207}

                {$number}<br>
                {$number|string_format:"%.2f"}<br>
                {$number|string_format:"%d"}<br>
                {$number|round:0}<br>
                {$number|round:1}<br>
                {$number|ceil} - а такое решение?

              • +1
                Петр Петр 30 августа 2017 14:21 #

                я придумал :))))))))))))))))))))))))))))))))))))))))))))))))))))

                {$number = 2635.7505}
                {$number1 = $number|string_format:"%.2f"}<br>
                {$number|string_format:"%.2f"}<br>
                {if $number > $number1}{$number|string_format:"%.2f" + 0.01} - если после двух знаков запятой есть что-то, то прибавляем тысячную{else}{$number1} - если нет, то выводим округленную{/if}

              • +1

                не помериф не узнаеф =)


                Добавить комментарий

                Чтобы добавить комментарий, зарегистрируйтесь или войдите