Вход | Регистрация

1С:Предприятие ::

Метки: 

Округление в большую сторону

Я
   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
 
  Рекламное место пустует
   Cyberhawk
 
1 - 14.03.18 - 19:41
Круто
   Cyberhawk
 
2 - 14.03.18 - 19:41
   myr4ik07
 
3 - 14.03.18 - 19:42
(1) да, уже башка кипит
   Cyberhawk
 
4 - 14.03.18 - 19:42
После арифметического округления вычти из результата исходное число и если оно отрицательное, то прибавь к результату округления 0.05
   Cyberhawk
 
5 - 14.03.18 - 19:43
оно = результат вычитания
   myr4ik07
 
6 - 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;

не, не оно?
   myr4ik07
 
8 - 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) скобочка там в выражении лишняя, да


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует