Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 17:56

Как округлить

Автор Tesla, 03 окт 2014, 14:20

0 Пользователей и 1 гость просматривают эту тему.

Tesla

Доброго дня. Товарищи, подскажите пожалуйста как округлить числа в диапазоне 15.01 - 15.09  до числа 15.10, то есть округлять десятичную часть до целого десятка в большую сторону.

has

В гугле в принципе ищется все))


//******************************************************************************

// глОкруглить(Числ, ПорядокОкругления)

//

// Параметры:

//  Числ              - исходное число

//  ПорядокОкругления - элемент перечисления Порядки окгугления:

//  "шаг" округления (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);
        КонецЕсли;
    КонецЕсли;
    Возврат Рез;
КонецФункции // глОкруглить()

Числ это Ваше число, порядок округления Вам надо 0.1 в данном случае

Tesla

Гугл сюда и привёл :)  Собсно, чё-то у меня не фурычит :xfbnsdfb:
Если ПорядокОкругления = Перечисление.ПорядкиОкругления.ОкрТочно Тогда
{Документ.Перемещение.Форма.Модуль(97)}: Поле агрегатного объекта не обнаружено (ОкрТочно)

Добавлено: 03 окт 2014, 16:17


Прошу прощения, что ввёл в заблуждение. Оказывается, моя задача решается таким вот стандартным способом: Окр(135.49+0.05, 1) будет давать  135,5 - то что нужно. Вобщем, аналог экселевского ОКРВВЕРХ() :lol:  спасибо!

has

Не увидел апдейт сообщения, ну и хорошо, что все хорошо

Теги:
Рейтинг@Mail.ru

Поиск