Имя: Пароль:
1C
1С v8
Округление до 10р
0 URAL
 
02.02.14
15:07
Моск перестал работать, подскажите как мне округлить 104.35 до 110.00 р. Окр() округляет до целого числа копеек и т. д. не могу сообразить
1 GROOVY
 
02.02.14
15:10
Подели, округли, помножь.
2 kumena
 
02.02.14
15:10
104.35 до 110.00
а чего не до 200 ?
3 kumena
 
02.02.14
15:11
я пока принципа оругления не понял, в большую сторону до скольки?
4 ДенисЧ
 
02.02.14
15:11
Окр(ччисло, -2)
5 МихаилМ
 
02.02.14
15:23
Вы неудачно пример
104.35 должно округлиться до 100
6 PR
 
02.02.14
15:27
Да пипец.
Окр((104,35 + 5) / 10) * 10.
7 PR
 
02.02.14
15:28
(5) Мозг отказывается признавать альтернативные миры? :))
8 URAL
 
02.02.14
15:34
(3) округление в 10 рублей и только в большую сторону, т.е. 212,44 нужно чтобы стало 220,00
9 Aleksey
 
02.02.14
15:34
(6) не 5, а 4,9, иначе при исходном числе 100, мы получим 110

100,00 + 5 = 105,0
105,0 / 10 = 10,5
Окр (10,5) = 11
11*10 = 110
10 zak555
 
02.02.14
15:35
приём показаний воды округляет в большую сторону до единицы
т.е.
если ты потратил 0.1 куб (100 литр), то тебе округлят до 1 куба (1000 л)
11 URAL
 
02.02.14
15:36
(1),(6) (9) спасибо!!!
12 PR
 
02.02.14
15:38
(9) Это детали. Но тогда уж не 4,9, а 4,99.
13 МишельЛагранж
 
02.02.14
15:40
(0) ну даже не знаю, как одноэсников назвать.
Сложно вычислить разрядность и округлять до любого разряда в любую сторону самостоятельно?
14 МишельЛагранж
 
02.02.14
15:45
Программисты, вы что, не можете быть умней т-ой платформы?!
15 Фокусник
 
02.02.14
15:50
(12) в этой задаче девятое много не бывает, т.к. нужно 4.(9) :)
16 Torquader
 
02.02.14
15:56
Если не хочется писать формулу, то округляем до второго знака целой части (-2) через стандартную функцию, а потом, если результат меньше исходного числа, то просто добавляем 10.
И всё.
17 KRV
 
02.02.14
15:58
(0) жадные вы..
18 Sasha_1CK
 
02.02.14
16:43
// Округляет число по заданному порядку. Если задано (=Истина) "ОкруглятьВБольшуюСторону",
// то число 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_01;
    КонецЕсли;

    Порядок = Число(Строка(ПорядокОкругления));

    // вычислим количество интервалов, входящих в число
    КоличествоИнтервал = Число / Порядок;

    // вычислим целое количество интервалов.
    КоличествоЦелыхИнтервалов = Цел(КоличествоИнтервал);

    Если КоличествоИнтервал = КоличествоЦелыхИнтервалов Тогда
        
        // Числа поделились нацело. Округлять не нужно.
        Результат = Число;
    Иначе
        Если ОкруглятьВБольшуюСторону Тогда

            // При порядке округления "0.05" 0.371 должно округлиться до 0.4
            Результат = Порядок * (КоличествоЦелыхИнтервалов + 1);
        Иначе

            // При порядке округления "0.05" 0.371 должно округлиться до 0.35,
            // а 0.376 до 0.4
            Результат = Порядок * Окр(КоличествоИнтервал,0,РежимОкругления.Окр15как20);
        КонецЕсли;

    КонецЕсли;

    Возврат Результат;

КонецФункции // ОкруглитьЦену()

В какой то из типовых точно есть но не помню в какой.
может и из 7.7 даже конвертил
19 Ranger_83
 
02.02.14
16:46
Аферисты?
20 Aleksey
 
02.02.14
16:47
(19) оптовики.
21 Aleksey
 
02.02.14
16:49
пришел товар по 99.78
Мы поставили свою наценку (допустим 20%) получилось 119.74.
Логично предположить, что ценник в розничный магазин такой выставлять не будешь, поэтому округляем и получаем 120 рупий.
22 Aleksey
 
02.02.14
16:50
Плюс обычно градация правил, ибо для округления товара по цене 1,27 и 25 588,73 должны применяться разные правила округления
23 Torquader
 
02.02.14
16:53
(22) Можно и одно и то же, только округление в процентном соотношении.
24 Aleksey
 
02.02.14
16:57
(23) Это как
Т.е. очевидно что в первом случае логично округлить до 10 копеек, в крайнем случае до 50 копеек, тогда как во втором случае смело можно округлять до сотни рублей
25 Sasha_1CK
 
02.02.14
16:58
(20) Странно в ТиСе порядок округления, был прямо в типе цен прописан.
Что в УТ убрали что ли?
26 zak555
 
02.02.14
17:01
(21) почему не будешь ?
27 Torquader
 
02.02.14
17:01
(24) Ну, например, мы прописываем, что цена округляется до трёх значащих цифр.
Тогда 1,27 останется, как есть, а вот 25588.73 будет округлено до 25600.00
Потом, ещё есть традиция - так выбирать единицу измерения, чтобы цена не превышала 4 целых цифр.

Просто, например, можно и алмазы тоннами продавать, но никто так не делает.
28 Torquader
 
02.02.14
17:03
(26) Конечно, в половине магазинов так и выставляют.
Только получается несколько проблем - во-первых, приходится на кассе округлять копейки (которые, чтобы покупатели не жужжали, приходится округлять только вниз).
Также, если у поставщика происходит небольшое удорожание или удешевение, то приходится менять ценник.
29 zak555
 
02.02.14
17:05
(28) вот я и хотел про это сказать, что при оплате наликом -- копейки отбрасываются в виде скидки
30 Torquader
 
02.02.14
17:11
(29) Это потому, что кто-то заранее не округлил цену.
31 zak555
 
02.02.14
17:14
(30) так цена с "копейками" привлекательней считается
Программист всегда исправляет последнюю ошибку.