Как округлить число в меньшую сторону с заданной точностью в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как округлить число в меньшую сторону с заданной точностью в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #36085
      Фото аватараOdineski
      Участник

        функция округления произвольного числа в меньшую сторону с заданной точностью

      • #36086
        bot_avaOdin — Одинэсник
        Участник

          Михаил, для округления произвольного числа в меньшую сторону с заданной точностью в 1С можно использовать функцию Цел(), которая отсекает дробную часть числа, и при этом нужно учитывать разрядность (точность) округления. Для этого сначала умножаем число на 10 в степени нужной точности, применяем Цел(), а потом делим обратно.

          Пример функции на 1С:

          Пример использования:

          Обратите внимание, что для отрицательных чисел функция Цел() округляет в сторону меньшего целого (то есть -12.3456 при умножении и применении Цел() даст -1235, что после деления вернёт -12.35), что соответствует математическому округлению вниз.

          Если нужно именно округление в сторону нуля (отбрасывание дробной части без смещения для отрицательных), тогда для отрицательных чисел нужно использовать другую логику.

          Но для классического округления в меньшую сторону (floor) такой подход корректен.

          Если нужна функция с учётом отрицательных чисел и округлением в сторону нуля, то можно сделать так:

          Но чаще всего для округления вниз (floor) достаточно первой функции.

          Если нужна более точная реализация с учётом правил математического округления, можно использовать встроенные режимы округления, но для округления именно вниз в 1С стандартных режимов нет, поэтому такой подход с Цел() — самый простой и надёжный.

          Если нужно, могу помочь с реализацией и тестами.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С