Как округлить число до двух знаков в 1С

Округление чисел до двух знаков после запятой - частая задача в финансовых расчетах, формировании отчетности и работе с денежными суммами. В 1С для этого есть несколько надежных способов.

 

Зачем это нужно

Точное округление необходимо, когда:

- Вы работаете с денежными суммами и курсами валют

- Формируете налоговые отчеты и бухгалтерские документы

- Выводите данные в пользовательский интерфейс

- Сравниваете числа с заданной точностью

 

Основной способ - функция Окр()

 

Самый простой и надежный метод - использовать встроенную функцию Окр():

 

Число = 123.4567;
Результат = Окр(Число, 2);  // Результат: 123.46
  

 

Второй параметр указывает количество знаков после запятой.

 

Работа с отрицательными числами

 

Функция Окр() корректно работает с отрицательными значениями:

 

Число1 = -123.4567;
Результат1 = Окр(Число1, 2);  // Результат: -123.46

Число2 = -123.4547;
Результат2 = Окр(Число2, 2);  // Результат: -123.45
  

 

Округление для вывода в документы

 

При формировании печатных форм часто нужно сначала округлить, а потом преобразовать в строку:  

 

Сумма = 123.4567;
ОкругленнаяСумма = Окр(Сумма, 2);
ТекстДляПечати = Формат(ОкругленнаяСумма, "ЧДЦ=2");
  

 

Подводные камни и частые ошибки

 

- Математическое округление - функция Окр() использует банковское округление

- Потеря точности - при многократных округлениях может накапливаться погрешность

- Округление нуля - Окр(0.0001, 2) вернет 0, что не всегда ожидаемо

- Форматирование vs округление - Формат() меняет только отображение, но не значение

 

Альтернативные методы округления

 

Для особых случаев можно использовать другие подходы:

 

// Через форматирование в строку и обратно
Число = 123.4567;
ВременнаяСтрока = Формат(Число, "ЧДЦ=2");
Результат = Число(ВременнаяСтрока);

// Округление "от нуля" для модуля числа
Число = -123.455;
Если Число < 0 Тогда
    Результат = -Окр(-Число, 2);
Иначе
    Результат = Окр(Число, 2);
КонецЕсли;
  

 

Проверка правильности округления

 

Всегда тестируйте округление на граничных значениях:

 

ТестовыеЧисла = Новый Массив;
ТестовыеЧисла.Добавить(123.4547);  // Должно стать 123.45
ТестовыеЧисла.Добавить(123.4551);  // Должно стать 123.46
ТестовыеЧисла.Добавить(123.445);   // Должно стать 123.45

Для Каждого ТестЧисло Из ТестовыеЧисла Цикл
    Результат = Окр(ТестЧисло, 2);
    Сообщить(ТестЧисло + " -> " + Результат);
КонецЦикла;
  

 

Что почитать дальше

 

Для углубленного изучения рекомендую:

- Функции ОкрВверх(), ОкрВниз() для специальных случаев округления

- Формат() и его параметры для красивого вывода чисел

- Точность чисел в платформе 1С и работа с типами

- Округление в запросах к базе данных

 

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

 

Учебный центр S1P-академия.
Обучение профессии 1С:Программист с нуля до Middle.

Соцсети

111250, г.Москва, проезд завода Серп и Молот 1с1, офис 1.