Как округлить до ближайшего числа кратному пяти?
Не подскажите, как в Количество Мест, да и вообще в коде округлять числа равные 5.
Хотя это уже не округление называется)
Нужно что бы цифры округлить число 0.5 и целое. По "ПОЛОВИНКЕ"
Пример:
2.4 = 2.5
4.2 = 4.0
26.9 = 27.
44.7 = 44.5
Кстати, с точки зрения математики 3 и 8 куда идут? К целому или дробному?
Хотя это уже не округление называется)
Нужно что бы цифры округлить число 0.5 и целое. По "ПОЛОВИНКЕ"
Пример:
2.4 = 2.5
4.2 = 4.0
26.9 = 27.
44.7 = 44.5
Кстати, с точки зрения математики 3 и 8 куда идут? К целому или дробному?
Найденные решения
(7)
в заголовке темы четко написано кратно 5
Да, здесь есть путаница: заголовок поста не соответствует примеру в теле поста. Т.к. текст поста я понять до конца не смог, то ориентировался исключительно на пример.
ЗарплатаКадрыКлиентСервер.Округлить(ОкруглитьДробьДоЦелогоНашМетод(2.4), 5))
Это лишнее. Приведенная Вами функция нормально считает и до дробной точности:
ЗарплатаКадрыКлиентСервер.Округлить(2.4, 0.5)
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Принцип прост: у нас есть готовое округление до единиц. А надо до половинок. Значит, надо округлить удвоенное число до единиц и поделить это пополам.
Еще у нас есть округление до заданного числа десятичных знаков. Можно поделить на пять, округлить до десятых и обратно помножить на пять.
Еще у нас есть округление до заданного числа десятичных знаков. Можно поделить на пять, округлить до десятых и обратно помножить на пять.
(2) не катит, из отладки
Окр(2 * 2)/2 2
Окр(3 * 2)/2 3
Окр(8 * 2)/2 8
все уже придумано до нас
ЗарплатаКадрыКлиентСервер.Округлить(2, 5) 0
ЗарплатаКадрыКлиентСервер.Округлить(3, 5) 5
ЗарплатаКадрыКлиентСервер.Округлить(8, 5) 10
Велосипедистам которые тут вопят, что читать общие модули это плохо, а писать свои костыли это гуд - привет.
Окр(2 * 2)/2 2
Окр(3 * 2)/2 3
Окр(8 * 2)/2 8
все уже придумано до нас
ЗарплатаКадрыКлиентСервер.Округлить(2, 5) 0
ЗарплатаКадрыКлиентСервер.Округлить(3, 5) 5
ЗарплатаКадрыКлиентСервер.Округлить(8, 5) 10
// Округляет число до заданной точности по указанному правилу.
//
// Параметры:
// Число - Число - число, которое необходимо округлить.
// Точность - Число - "базис", до которого нужно округлить заданное число.
// Правило - ПеречислениеСсылка.ПравилаОкругленияПриРасчетеЗарплаты.
//
// Возвращаемое значение:
// Число - округленное до заданной точности значение.
//
Функция Округлить(Число, Точность = 0, Правило = Неопределено) Экспорт
// Если надо округлить 0 или точность не задана, то возвращаем заданное число.
Если Не ЗначениеЗаполнено(Число)
Или Точность <= 0 Тогда
Возврат Число
КонецЕсли;
Множитель = Число / Точность;
ЦелыйМножитель = Цел(Множитель);
Если Множитель = ЦелыйМножитель Тогда
Результат = Число;
Иначе
Результат = Точность * Окр(Множитель);
Если Правило = ПредопределенноеЗначение("Перечисление.ПравилаОкругленияПриРасчетеЗарплаты.ВБольшуюСторону") Тогда
Результат = Точность * (ЦелыйМножитель + 1);
ИначеЕсли Правило = ПредопределенноеЗначение("Перечисление.ПравилаОкругленияПриРасчетеЗарплаты.ВМеньшуюСторону") Тогда
Результат = Точность * ЦелыйМножитель;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
ПоказатьВелосипедистам которые тут вопят, что читать общие модули это плохо, а писать свои костыли это гуд - привет.
(5) Как я понял, округлять то нужно до 0.5, а не до 5. В приведенной Вами функции ровно тот же алгоритм, только с дополнительной опцией, в какую сторону округлять.
В свою защиту против велосипедиста скажу, что попросту никогда не работал с подсистемой ЗУП, а потому ни разу не видел функцию "Округлить", только и всего. Полностью все общие модули же не перечитаешь и не удержишь в голове.
В свою защиту против велосипедиста скажу, что попросту никогда не работал с подсистемой ЗУП, а потому ни разу не видел функцию "Округлить", только и всего. Полностью все общие модули же не перечитаешь и не удержишь в голове.
(6) в заголовке темы четко написано кратно 5, думаю необходимо округлять дробные числа кратно целому 5.
Тогда сначала избавляемся от дроби можно согласно вашему обернуть в функцию и уже потом типовой
ЗарплатаКадрыКлиентСервер.Округлить(ОкруглитьДробьДоЦелогоНашМетод(2.4), 5))
проверил в отладке работает
ЗарплатаКадрыКлиентСервер.Округлить(2.4, 5) 0 Число
ЗарплатаКадрыКлиентСервер.Округлить(4.2, 5) 5 Число
ЗарплатаКадрыКлиентСервер.Округлить(26.9, 5) 25 Число
ЗарплатаКадрыКлиентСервер.Округлить(44.7 , 5) 45 Число
ЗарплатаКадрыКлиентСервер.Округлить(ОкруглитьДробьДоЦелогоНашМетод(2.4), 5))
проверил в отладке работает
ЗарплатаКадрыКлиентСервер.Округлить(2.4, 5) 0 Число
ЗарплатаКадрыКлиентСервер.Округлить(4.2, 5) 5 Число
ЗарплатаКадрыКлиентСервер.Округлить(26.9, 5) 25 Число
ЗарплатаКадрыКлиентСервер.Округлить(44.7 , 5) 45 Число
(7)
в заголовке темы четко написано кратно 5
Да, здесь есть путаница: заголовок поста не соответствует примеру в теле поста. Т.к. текст поста я понять до конца не смог, то ориентировался исключительно на пример.
ЗарплатаКадрыКлиентСервер.Округлить(ОкруглитьДробьДоЦелогоНашМетод(2.4), 5))
Это лишнее. Приведенная Вами функция нормально считает и до дробной точности:
ЗарплатаКадрыКлиентСервер.Округлить(2.4, 0.5)
(5) Настаиваю: такую элементарную мелочь выискивать в общих модулях, если она нужна раз в несколько лет - плохо! Понять однажды, из любого источника, даже общего модуля, если оно случайно встретилось - хорошо. Но общие модули - не детективы. И читать их просто так - это для особо извращенных умов. А вот придумать простое решение по ходу - хорошо.
(12)
общие модули - не детективы. И читать их просто так - это для особо извращенных умов. А вот придумать простое решение по ходу - хорошо.
Именно способность придумать свой алгоритм отличает программиста от 1Сника - последний полагается исключительно на функции платформы или типовых конфигураций.
(14)
элементарная задачка по арифметике, которую любому кодеру знать неплохо бы, даже 1С-нику
Ничего не имею против, просто переадресую это пожелание настаивающим на использовании модуля ЗарплатаКадрыКлиентСервер в задаче определения количества мест... интересно, мест чего? Штатного расписания, наверное? ;)
(15)
ХЗ. Места еще фигурируют, например, в накладных. Где-то это упаковки, где-то паллеты... Хотя половинки мест..? С другой стороны, я когда-то участвовал в автоматизации оптовой торговли пивом, там народ перепаковывал упаковки 6 бутылок на 2 сорта, чтобы только поддерживать ассортимент точек, в которых продается только самое дешевое... А в правилах хорошего стиля программирования есть и такое: "не делать лишних предположений". И, насколько я понял про общий модуль, коллега утверждал, что в общих модулях много полезных функций и процитировал оттуда решение задачи в более общей постановке. Отчего он цитировал именно ЗУП? Возможно, он сейчас интенсивно с ней работает. Все-таки, ставил вопрос и писал ответ разные люди. И связывать "места" вопроса с "ЗУП" ответа для получения каких-то выводов о контексте исходной задачи не очень корректно, мне кажется.
интересно, мест чего?
ХЗ. Места еще фигурируют, например, в накладных. Где-то это упаковки, где-то паллеты... Хотя половинки мест..? С другой стороны, я когда-то участвовал в автоматизации оптовой торговли пивом, там народ перепаковывал упаковки 6 бутылок на 2 сорта, чтобы только поддерживать ассортимент точек, в которых продается только самое дешевое... А в правилах хорошего стиля программирования есть и такое: "не делать лишних предположений". И, насколько я понял про общий модуль, коллега утверждал, что в общих модулях много полезных функций и процитировал оттуда решение задачи в более общей постановке. Отчего он цитировал именно ЗУП? Возможно, он сейчас интенсивно с ней работает. Все-таки, ставил вопрос и писал ответ разные люди. И связывать "места" вопроса с "ЗУП" ответа для получения каких-то выводов о контексте исходной задачи не очень корректно, мне кажется.
(16) неважно откуда метод - из ЗУП, ПУП... я оставил идентификацию(имя общего модуля) только для того
чтобы пытливый ум понял откуда эта идея. а ваши рассуждения о местах порожняк какой-то
какая разница откуда идея если она применима на практике в других задачах?
чтобы пытливый ум понял откуда эта идея. а ваши рассуждения о местах порожняк какой-то
какая разница откуда идея если она применима на практике в других задачах?
(12) Кэп, не смешите
с утра повеселили адепты "вечного сияния чистого разума"
общие модули я не просто так читаю а "ворую" оттуда неплохие идеи в закоулки своей памяти.
дело в том, что над этими модулями трудятся сотни, надеюсь светлых голов, и будет архиглупо
не воспользоваться лучшими плодами этих трудов.
вероятно, многие вещи я могу написать сам, вероятно некоторые даже круче, но будет еще глупее
ставать в позу и арать я крутой, я написал нетленку круче чем у разрабов - это ребячество.
главное идеи, повторюсь, и не важно написал ты их сам или украл.
И чем больше идей у тебя в голове, тем проще тебе будет создать новую.
с утра повеселили адепты "вечного сияния чистого разума"
общие модули я не просто так читаю а "ворую" оттуда неплохие идеи в закоулки своей памяти.
дело в том, что над этими модулями трудятся сотни, надеюсь светлых голов, и будет архиглупо
не воспользоваться лучшими плодами этих трудов.
вероятно, многие вещи я могу написать сам, вероятно некоторые даже круче, но будет еще глупее
ставать в позу и арать я крутой, я написал нетленку круче чем у разрабов - это ребячество.
главное идеи, повторюсь, и не важно написал ты их сам или украл.
И чем больше идей у тебя в голове, тем проще тебе будет создать новую.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот