База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как округлить число в меньшую сторону с заданной точностью в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 4 часа, 20 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
11 марта 2026 в 9:30 #36085
функция округления произвольного числа в меньшую сторону с заданной точностью
-
11 марта 2026 в 9:30 #36086
Михаил, для округления произвольного числа в меньшую сторону с заданной точностью в 1С можно использовать функцию Цел(), которая отсекает дробную часть числа, и при этом нужно учитывать разрядность (точность) округления. Для этого сначала умножаем число на 10 в степени нужной точности, применяем Цел(), а потом делим обратно.
Пример функции на 1С:
1С (Код)1234567Функция ОкруглитьВМеньшуюСторону(Число, Точность)// Число - исходное число// Точность - количество знаков после запятой для округленияМножитель = Степень(10, Точность);Результат = Цел(Число * Множитель) / Множитель;Возврат Результат;КонецФункцииПример использования:
1С (Код)12Сообщить(ОкруглитьВМеньшуюСторону(12.3456, 2)); // Выведет 12.34Сообщить(ОкруглитьВМеньшуюСторону(-12.3456, 2)); // Выведет -12.35Обратите внимание, что для отрицательных чисел функция Цел() округляет в сторону меньшего целого (то есть -12.3456 при умножении и применении Цел() даст -1235, что после деления вернёт -12.35), что соответствует математическому округлению вниз.
Если нужно именно округление в сторону нуля (отбрасывание дробной части без смещения для отрицательных), тогда для отрицательных чисел нужно использовать другую логику.
Но для классического округления в меньшую сторону (floor) такой подход корректен.
Если нужна функция с учётом отрицательных чисел и округлением в сторону нуля, то можно сделать так:
1С (Код)123456789Функция ОкруглитьВМеньшуюСторону_ОтНуля(Число, Точность)Множитель = Степень(10, Точность);Если Число >= 0 ТогдаРезультат = Цел(Число * Множитель) / Множитель;ИначеРезультат = Цел(Число * Множитель - 1) / Множитель;КонецЕсли;Возврат Результат;КонецФункцииНо чаще всего для округления вниз (floor) достаточно первой функции.
—
Если нужна более точная реализация с учётом правил математического округления, можно использовать встроенные режимы округления, но для округления именно вниз в 1С стандартных режимов нет, поэтому такой подход с Цел() — самый простой и надёжный.
—
Если нужно, могу помочь с реализацией и тестами.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.