4
Матрейя
16.02.05
✎
18:29
|
Порядок=?(Порядок=0,0.01,Порядок);
Числ=Числ+Порядок/2;
Числ=Макс(Цел(Числ/Порядок)*Порядок,Порядок);
|
|
9
account77
20.02.05
✎
06:39
|
123.82 123.37 Прикольно, циферки в примере почти совпали
//******************************************************************************
// глОкруглить(Числ, ПорядокОкругления)
//
// Параметры:
// Числ - исходное число
// ПорядокОкругления - элемент перечисления Порядки окгугления:
// "шаг" округления (0.01 (арифметическое), 0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100)
//
// Возвращаемое значение:
// Округленное по заданному порядку значение
//
// Описание:
// Округляет число вверх по заданному порядку. Т.е число 123.37 при порядке
// округление 0.5 превратиться в 123.50, а число 0.1 при порядке округления
// 5 станет равным 5.
// Если значение перечисления ОкрТочно, то округляет арифметически до 0.01
//
Функция глОкруглить(Числ, ПорядокОкругления) Экспорт
Перем Рез;
Если ПорядокОкругления = Перечисление.ПорядкиОкругления.ОкрТочно Тогда
// арифметическое округление до 2-х знаков после запятой
Рез = Окр(Числ, 2);
Иначе
// округление к верхней границе по заданному порядку
// преобразуем порядок округления число
Порядок = Число(Строка(ПорядокОкругления));
// вычислим количество интервалов, входящих в число
КолвоИнтервал = Числ / Порядок;
// вычислим целое количество интервалов.
КолвоИнтервалЦел= Цел(КолвоИнтервал);
Если КолвоИнтервал = КолвоИнтервалЦел Тогда
// Числа поделились нацело. Округлять не нужно.
Рез = Числ;
Иначе
Рез = Порядок * (КолвоИнтервалЦел + 1);
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции // глОкруглить()
|
|