Имя: Пароль:
1C
1С v8
округление в большую
0 Chameleon1980
 
03.09.15
15:50
пережовано, но

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

чет не могу найти
1 ДенисЧ
 
03.09.15
15:51
цел(чч + 0.5)
2 Ненавижу 1С
 
гуру
03.09.15
15:56
(1) 1.01 превратится в 1.00
3 Ненавижу 1С
 
гуру
03.09.15
16:00
?(Ч=Цел(Ч), Ч, Цел(Ч)+1)
4 bolobol
 
03.09.15
16:13
-ЦЕЛ(-ОКР)
5 wertyu
 
03.09.15
16:16
Цел(а) + 1
6 bolobol
 
03.09.15
16:17
(5) 1 превратится в 2.
7 Chameleon1980
 
03.09.15
16:21
поэксперимнтируем
8 Chameleon1980
 
03.09.15
16:21
пердоне - пиво млин
9 Fragster
 
гуру
03.09.15
16:22
Окр(Перем + 0.5, 0, РежимОкругления.Окр15как10)
10 Chameleon1980
 
03.09.15
16:23
0,0625
0,0315
0,355
0,554
11 Chameleon1980
 
03.09.15
16:23
2,04
2,36
4,72
12 bolobol
 
03.09.15
16:24
Оу... прямая трансляция с 1с пошла...
13 Ildarovich
 
03.09.15
16:29
Можно еще вот так:
М - Цел(М - Ч)
где М = 9999999999 или больше, при необходимости.
Лучше, чем (3), если Ч - выражение.
Хуже тем, что нужно задавать М.
14 wertyu
 
03.09.15
16:33
(13) Цел(а + 1) - Цел(Цел(а + 1) - а)
15 bolobol
 
03.09.15
16:33
Чего огород городите, товарищи, проще чем через двойной минус - не бывает
16 mikecool
 
03.09.15
16:36
17 Fragster
 
гуру
03.09.15
16:36
(15) ага, только не работает :)
18 Fragster
 
гуру
03.09.15
16:36
работает (9), например
19 Chameleon1980
 
03.09.15
16:37
?(Ч=Цел(Ч), Ч, Цел(Ч)+1)

Исходное: 1.2
Нужное: 2
Исходное: 3.2
Нужное: 4
Исходное: 4.023
Нужное: 5
20 wertyu
 
03.09.15
16:42
(18) только Окр15Как20
21 bolobol
 
03.09.15
16:44
(20) Нет, в (9) как раз правильно, т.к. иначе 1.00 превратится в 2.

(18) Спасибо! Багу сию запомним...
22 wertyu
 
03.09.15
16:45
(21) 1.3 тогда в 1 превратится
23 Fragster
 
гуру
03.09.15
16:46
(20) нет.
24 Fragster
 
гуру
03.09.15
16:46
(22) проверь уже...
25 wertyu
 
03.09.15
16:46
(23) тогда вообще не работает
26 Ненавижу 1С
 
гуру
03.09.15
16:46
(19) с тебя 300р. на телефон
27 Fragster
 
гуру
03.09.15
16:46
(21) это не бага
28 Fragster
 
гуру
03.09.15
16:47
(25) работает
29 wertyu
 
03.09.15
16:47
(24) надежнее (3) и (13) с (14)
30 wertyu
 
03.09.15
16:47
(27) если работает, то 100% баг
31 Fragster
 
гуру
03.09.15
16:48
Х = 1.9999999999;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = 1.0000000001;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = 1.5000000001;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = 1.4999999999;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = 1.5;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
32 Fragster
 
гуру
03.09.15
16:48
(30) нет
33 wertyu
 
03.09.15
16:50
(32) да в (31) по порядку должно быть 2, 1, 2, 1, 2, если везде 2, то это баг
34 Ненавижу 1С
 
гуру
03.09.15
16:50
(33) почему?
35 Fragster
 
гуру
03.09.15
16:51
(34) потому что wertyu не видит + 0.5
36 Fragster
 
гуру
03.09.15
16:54
либо не включает мозг
37 Timon1405
 
03.09.15
16:55
(3) не работает для X=-1,5, а (9) работает
38 Ненавижу 1С
 
гуру
03.09.15
17:00
(37) согласен, для отрицательных не работает
39 Fragster
 
гуру
03.09.15
17:06
(37) для отрицательных (9) тоже неправильно работает
40 Fragster
 
гуру
03.09.15
17:06
Х = 1.9999999999;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = 1.0000000001;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = 1.5000000001;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = 1.4999999999;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = 1.5;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = 1;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = -1.9999999999;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = -1.0000000001;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = -1.5000000001;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = -1.4999999999;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = -1.5;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
Х = -1;
Сообщить("" + Х + " - " + Окр(Х + 0.5, 0, РежимОкругления.Окр15как10));
41 wertyu
 
03.09.15
17:09
(40) а (13) и (14) работает правильно
42 Fragster
 
гуру
03.09.15
17:16
(41) ты проверил на данных из (40)?
43 wertyu
 
03.09.15
17:28
(42) даже можно упростить
Цел(а) - Цел(Цел(а) - а)
44 DS
 
03.09.15
17:42
(43) проверь 2.5
45 wertyu
 
03.09.15
17:51
(44) значит всё-таки (13) и (14)
хотя по идее Цел(а + 1) = Цел(а) + 1
46 wertyu
 
03.09.15
17:54
(44) это из-за бага Цел(-1.5) = -1 вместо -2
47 bolobol
 
03.09.15
17:59
(27) Это документировано так у 1С??
48 Fragster
 
гуру
03.09.15
18:06
(47) открой СП
49 DTXyupyup
 
03.09.15
19:39
(15) +
50 NewNick
 
03.09.15
21:01
работают только (14) и (43) что впрочем и понятно
(19) будет работать если выражение слегка модернизировать
Цел(Ч)+(Ч<>Цел(Ч))*(Цел(Ч)*2+1)%2

кто захочет побаловаться тест из (40) в нормальном виде

Процедура Округлить(Ч)
Сообщить("" + Ч + " - " +  (Цел(Ч)+(Ч<>Цел(Ч))*(Цел(Ч)*2+1)%2));
КонеЦПроцедуры

Округлить(1.9999999999);
Округлить(1.0000000001);
Округлить(1.5000000001);
Округлить(1.4999999999);
Округлить(1.5);
Округлить(1);
Округлить(-1.9999999999);
Округлить(-1.0000000001);
Округлить(-1.5000000001);
Округлить(-1.4999999999);
Округлить(-1.5);
Округлить(-1);
51 NewNick
 
03.09.15
21:07
(50)
впрочем (19) можно записать еще так
Цел(Ч)+(Ч<>Цел(Ч))*(1-2*(Ч<0))
52 NewNick
 
03.09.15
21:55
(43) кстати не работает.
53 Фокусник
 
03.09.15
22:25
(0) окр(ч+0,49999999999999999999999999)
54 NewNick
 
03.09.15
22:39
(53) не спортивно. но работает.
55 DS
 
04.09.15
09:55
(46) Согласен. Но такая уж у 1с функция.
56 bolobol
 
04.09.15
10:47
(48) На к0к0й странице?
57 bolobol
 
04.09.15
11:05
Перерыл, кстати, яндекс... В отдельных местах даже пишут, что отрицательное число можно представить в виде положительного и тогда для него будет действовать "обычное" правило округления. И это несмотря на то, что округляться обязан "ответ задачи", а результат вычислений за пару шагов до ответа. Одна каша какая-то. Есть у кого тру-линк на вопрос?
58 bolobol
 
04.09.15
11:06
* "...а результат..." читать как "...а не промежуточный результат..."
59 DS
 
04.09.15
11:08
Честно говоря, не понимаю проблемы. Задача решена? Решена. Что не ясно?
60 Ненавижу 1С
 
гуру
04.09.15
11:16
(59) оплаты (26) не было