Можно ли округлить число в большую или меньшую сторону в зависимости от условия, в интернете видел только в общую либо меньшую, а как реализовать и так так?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(10) лично я не совсем понимаю, что вам нужно сделать в итоге.
Если вам нужно
то это обычное математическое округление и никаких дополнительных условий не нужно.
Если вы хотите именно задавать направление округления, то будет что-то вроде:
В данном случае вся сложность будет в определении этой самой ПоловиныЦеныДеления.
Нужно будет проверять количество знаков после запятой у квалификатора числа, делить 1 на 10 /возводить 10 в отрицательная степень и делить все на 2
Если вам нужно
1.4444 = 1.444 и 1.4446=1.445
то это обычное математическое округление и никаких дополнительных условий не нужно.
Если вы хотите именно задавать направление округления, то будет что-то вроде:
Если ОкруглениеВВерх Тогда
Значение = Значение + ПоловинаЦеныДеления;
КонецЕсли;
В данном случае вся сложность будет в определении этой самой ПоловиныЦеныДеления.
Нужно будет проверять количество знаков после запятой у квалификатора числа, делить 1 на 10 /возводить 10 в отрицательная степень и делить все на 2
Округление и так работает, как тебе требуется - одновременно и в большую и в меньшую сторону. Если брать обычный, всем привычный способ.
Если отбрасываемый разряд меньше 5, то идет в меньшую сторону, если 5 и больше, то идет в большую сторону. То есть как бы вот одновременно.
То есть в (5) всё правильно написали.
Результат:
1,4444=1,444
1,4446=1,445
PS. Но вообще всё могут поменять "условия", про эти условия что-то и не написано...
Если отбрасываемый разряд меньше 5, то идет в меньшую сторону, если 5 и больше, то идет в большую сторону. То есть как бы вот одновременно.
То есть в (5) всё правильно написали.
&НаКлиенте
Процедура Команда1(Команда)
ч = 1.4444;
Сообщить("" + ч + "=" + Окр(ч, 3));
ч = 1.4446;
Сообщить("" + ч + "=" + Окр(ч, 3));
КонецПроцедуры
ПоказатьРезультат:
1,4444=1,444
1,4446=1,445
PS. Но вообще всё могут поменять "условия", про эти условия что-то и не написано...
(16)
Бред? Методологически да. Логически - нет. Логика оперирует только двумя понятиями - Истина и Ложь. Выполняется условие (исполняем первы вариант "так") или не выполняется (исполняем второй вариант "либо так"). Само условие неважно абсолютно.
Абстракция - наше все. Абстракции не интересно знать про то, что происходит за её пределами.
Но вообще всё могут поменять "условия", про эти условия что-то и не написано...
А это важно? Ну давай на ходу придумаю тебе условие: Если общая сумма делится на 12 копеек без остатка - то округлять в меньшую сторону до 10 рублей, иначе - в большую сторону до 1 рубля.
Бред? Методологически да. Логически - нет. Логика оперирует только двумя понятиями - Истина и Ложь. Выполняется условие (исполняем первы вариант "так") или не выполняется (исполняем второй вариант "либо так"). Само условие неважно абсолютно.
Абстракция - наше все. Абстракции не интересно знать про то, что происходит за её пределами.
(17) То есть вопрос про условие, и достаточно было написать Если условие Тогда окр1... Иначе Окр2... КонецЕсли; ? Я услышал вопрос про округление, про одновременное использование округления в большую и меньшую сторону. Но сделал ремарку, что условие не определено. Может его условие это значение последней цифры в числе...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот