|
|
| ||
Гений 1С 21.02.21 - 12:38 | Что-то я не нашел такой функции в 1С, поэтому написал свою:
Функция ОкрБольш(Ч, Разрядность) Экспорт Ц = Окр(Ч, Разрядность); Если Ц >= Ч Тогда Возврат Ц; КонецЕсли; Если Разрядность >= 0 Тогда Возврат Ц + 1/Pow(10, Разрядность); Иначе Возврат Ц + Pow(10, -Разрядность); КонецЕсли; КонецФункции А как правильно? | ||
ДенисЧ 1 - 21.02.21 - 12:44 | Если положительное, то Цел(1.12 + 1) | ||
RomanYS 2 - 21.02.21 - 12:52 | Ц = Окр(Ч, Разрядность); Возврат Ц + ?(Ц >= Ч, 0, Pow(10, -Разрядность)); | ||
Ненавижу 1С 3 - 21.02.21 - 13:44 | (0) у тебя боязнь работы с отрицательными степенями? | ||
Ненавижу 1С 4 - 21.02.21 - 13:50 | Функция ОкрБольш(Ч, Разрядность=0) Экспорт Возврат Окр(Ч+Pow(10, Разрядность)/2, Разрядность, РежимОкругления.Окр15как10); КонецФункции | ||
Ненавижу 1С 5 - 21.02.21 - 13:52 | |||
RomanYS 6 - 21.02.21 - 13:58 | (4) минус похоже потерял, а так даже покрасивше | ||
volfy 7 - 21.02.21 - 13:59 | +0,5 и обычное округление. | ||
RomanYS 8 - 21.02.21 - 14:04 | |||
Ненавижу 1С 9 - 21.02.21 - 14:05 | (4) да, степень -Разрядность | ||
Гений 1С 10 - 21.02.21 - 14:22 | (3) честно говоря, не помню. Проверил на калькуляторе 10 в степени -2 не равно -0.01 | ||
Гений 1С 11 - 21.02.21 - 14:23 | (4) проверь при параметрах (0.1, 1) даст 0.1 или 0.2? | ||
Ненавижу 1С 12 - 21.02.21 - 14:31 | |||
Ненавижу 1С 13 - 21.02.21 - 14:38 | (10) а должно быть? | ||
Guk 14 - 21.02.21 - 16:55 | если это гений, то я то тогда кто?... | ||
Ёпрст 15 - 21.02.21 - 17:53 | (0) почти во всех типовых, общий модуль, типа Ценообразование:
// Округляет число по заданному порядку. Если задано (=Истина) "ОкруглятьВБольшуюСторону", // то число 123.37 при порядке округление 0.5 превратиться в 123.50, а число 0.1 // при порядке округления 5 станет равным 5. // // Параметры: // Число - исходное число // ПорядокОкругления - элемент перечисления Порядки окгугления: // "шаг" округления (0.01 (арифметическое), 0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100) // ОкруглятьВБольшуюСторону - булево, определяет способ округления: если Истина, // то при порядке округления "5" 0.01 будет округлена до 5, // Ложь - округление по арифметическим правилам // // Возвращаемое значение: // Округленное по заданному порядку значение // Функция ОкруглитьЦену(Число, ПараметрПорядокОкругления, ОкруглятьВБольшуюСторону) Экспорт Перем Результат; Если НЕ ЗначениеЗаполнено(Число) Тогда Возврат 0; КонецЕсли;  // Преобразуем порядок округления числа.  // Если передали пустое значение порядка, то округлим до копеек. Если НЕ ЗначениеЗаполнено(ПараметрПорядокОкругления) Тогда ПорядокОкругления = Перечисления.ПорядкиОкругления.Окр0_01; Иначе ПорядокОкругления = ПараметрПорядокОкругления; КонецЕсли; Порядок = Число(Строка(ПорядокОкругления));  // вычислим количество интервалов, входящих в число КоличествоИнтервал = Число / Порядок;  // вычислим целое количество интервалов. КоличествоЦелыхИнтервалов = Цел(КоличествоИнтервал); Если КоличествоИнтервал = КоличествоЦелыхИнтервалов Тогда  // Числа поделились нацело. Округлять не нужно. Результат = Число; Иначе Если ОкруглятьВБольшуюСторону Тогда  // При порядке округления "0.05" 0.371 должно округлитья до 0.4 Результат = Порядок * (КоличествоЦелыхИнтервалов + 1); Иначе  // При порядке округления "0.05" 0.371 должно округлитья до 0.35,  // а 0.376 до 0.4 Результат = Порядок * Окр(КоличествоИнтервал,0,РежимОкругления.Окр15как20); КонецЕсли; КонецЕсли; Возврат Результат; КонецФункции// ОкруглитьЦену() | ||
Ёпрст 16 - 21.02.21 - 17:54 | И эта шляпа была еще во всех типовых конфах в клюшках. | ||
Ёпрст 17 - 21.02.21 - 17:54 | там было перечисление, для определения порядка округления. и функция в глобальнике -глОкруглитьЦену | ||
Ёпрст 18 - 21.02.21 - 17:57 | В ут11 это в общем модуле ЦенообразованиеКлиентСервер | ||
Aleksey 19 - 21.02.21 - 18:02 | а что прибавить 0,5 уже не работает? | ||
hhhh 20 - 21.02.21 - 18:16 | (19) 0.49999999999 | ||
ДедМорроз 21 - 21.02.21 - 19:44 | На самом деле,проблема не в том,в какую сторону округлять,а в том,что округление несимметрично.
Если мы округляем значение налога,например,а потом вычитаем его из общей суммы или сначала вычитаем,а потом округляем,то получаются разные результаты. Округление же до ближайшего числа,кратного чему-то это вообще очень спорная операция. | ||
Ненавижу 1С 22 - 21.02.21 - 19:47 | (21) думаете стоит запретить? | ||
Ненавижу 1С 23 - 21.02.21 - 19:48 | (21) кстати, фразы начинающиеся со слов "на самом деле" не внушают доверия. | ||
ДедМорроз 24 - 21.02.21 - 19:57 | (23)не внушают,не читай. | ||
Гений 1С 25 - 22.02.21 - 05:45 | (21) мне не для бюстгалтерии нужно | ||
Гений 1С 26 - 22.02.21 - 05:46 | (15) мне для нетленки. Типовая функция монструозна как-то и использует преобразование строки в число |
|
Список тем форума |