|
Округление в большую сторону |
☑ |
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) скобочка там в выражении лишняя, да
|
|