Имя: Пароль:
1C
 
Округление в большую сторону
0 myr4ik07
 
14.03.18
19:40
Цена = 37,22 грн, если округлять до 0,05, то арифметически округляет на 37,20, а надо чтоб на 37,25

и т.д.
37.23 = 37.25
37.24 = 37.25

37.25 = 37.25

а вот все что после 5
37.26 = 37.30
1 Cyberhawk
 
14.03.18
19:41
Круто
2 Cyberhawk
 
14.03.18
19:41
3 myr4ik07
 
14.03.18
19:42
(1) да, уже башка кипит
4 Cyberhawk
 
14.03.18
19:42
После арифметического округления вычти из результата исходное число и если оно отрицательное, то прибавь к результату округления 0.05
5 Cyberhawk
 
14.03.18
19:43
оно = результат вычитания
6 myr4ik07
 
14.03.18
20:00
вроде оно

Функция Окр0_5_2(Цена) Экспорт
    Результат = 0;    
    
    ЦенаСОкруглением = окр(Цена,1) - Цена;
    Если ЦенаСОкруглением = 0 Тогда
        // оставляем как есть
        Результат = Цена;
    иначеЕсли ЦенаСОкруглением < 0 Тогда
        //0.01,0.02,0.03,0.04 увеличиваем до 0.05
        Результат = Цена+ (0.05 - (Цена - окр(Цена,1)));
    ИначеЕсли ЦенаСОкруглением = 0.05 Тогда
        //оставляем как есть
        Результат = Цена;
    Иначе
        //оставляем как есть
        Результат = Окр(Цена,1);
    КонецЕсли;
    
    Возврат Результат;
КонецФункции
7 Малыш Джон
 
14.03.18
20:05
Результат = Окр(Цена*20)/20;

не, не оно?
8 myr4ik07
 
14.03.18
20:18
и вроде оно, если нужно округлить до 0.10
пример
37.22 по мат будет 37.20
а нужно 37.30

тогда


Функция Окр0_1_2(Цена) Экспорт
    Результат = 0;    
    
    ЦенаСОкруглением = окр(Цена,1) - Цена;
    Если ЦенаСОкруглением = 0 Тогда
        // оставляем как есть
        Результат = Цена;
    иначеЕсли ЦенаСОкруглением < 0 Тогда
        //0.01,0.02,0.03,0.04 увеличиваем до 0.10
        Результат = окр(Цена,1) + 0.10;
    Иначе
        //оставляем как есть
        Результат = Окр(Цена,1);
    КонецЕсли;
    
    Возврат Результат;
КонецФункции
9 Злопчинский
 
14.03.18
20:30
ТоЧтоНадо = Окр(ТоЧтоЕсть+ПоловинкуСледующегоРазрядаЗаНужнымОкруглением,КоличествоЦФИРоКРУЛЕНИЯ,0)
10 Малыш Джон
 
14.03.18
21:20
(0) "Цена = 37,22 грн, если округлять до 0,05, то арифметически округляет на 37,20, а надо чтоб на 37,25"
(8) "пример 37.22 по мат будет 37.20 а нужно 37.30"

ты уж определись, что нужно-то...

Для первого: Результат = ?(Цел(Цена*20)/20 = Цена, Цел(Цена*20))/20,(Цел(Цена*20)+1)/20)
для второго: Результат = ?(Цел(Цена*10)/10 = Цена, Цел(Цена*10))/10,(Цел(Цена*10)+1)/10)
11 Малыш Джон
 
14.03.18
21:29
+(10) скобочка там в выражении лишняя, да