Имя: Пароль:
1C
 
Округлить в большую сторону до целого
0 manyak
 
10.04.09
10:54
число необходимо округить до целого: 1.1 нужно округлить до 2, посоветуйте как?
1 lamme
 
10.04.09
10:56
ТвоеЧисло = 1,1
Цел(ТвоеЧисло/ТвоеЧисло)+1

гы ...

не ?
(наугад придумал ... могут быть косяки)
2 IronDemon
 
10.04.09
10:56
прибавить 0.5 и округлить
3 Ненавижу 1С
 
гуру
10.04.09
10:57
?(Цел(Ч)=Ч,Ч,Цел(Ч)+1)
4 Ненавижу 1С
 
гуру
10.04.09
10:57
(1)(2) не верно
5 Mitriy
 
10.04.09
10:57
(2) 0,4
6 lamme
 
10.04.09
10:57
(4)
почему ?
7 Ненавижу 1С
 
гуру
10.04.09
10:58
(6)
ТвоеЧисло = 10,1
Цел(ТвоеЧисло/ТвоеЧисло)+1
результат 2
8 Irbis
 
10.04.09
10:58
(1) Незачет. При целом неверно округлиться
9 ShoGUN
 
10.04.09
10:59
(5) Фуфел. 1,05 округли.
10 lamme
 
10.04.09
10:59
(7)
а .. точно !
косяк ...
11 Mitriy
 
10.04.09
10:59
(3) не взлетит...
12 Ненавижу 1С
 
гуру
10.04.09
11:00
(11) обоснуй
13 ShoGUN
 
10.04.09
11:00
(11) Взлетит, причем запросто.
14 Mitriy
 
10.04.09
11:00
(8) сам ты... в сабже точность задано до десятых...
15 ShoGUN
 
10.04.09
11:01
(14) Ничего в сабже не задано. С тем же успехом там могло быть 1,308 или 3,08.
16 НЕА123
 
10.04.09
11:01
(2)+1
Окр(ЧислоКакоеТо + 0.5, 0, 0)
17 Mitriy
 
10.04.09
11:01
(12) взлетит... Вижу Цел, думаю Окр... пардонте...
18 manyak
 
10.04.09
11:02
10х
19 НЕА123
 
10.04.09
11:03
П Я Т Н И Ц А ! ! !
20 Mitriy
 
10.04.09
11:03
(15) в общем, иди лесом, ты мне неинтересен...
21 YurOK_51
 
10.04.09
11:04
Число = 5,3;
ЦелаяЧасть = Цел(Число);
ДробнаяЧасть = Число - ЦелаяЧасть;
КонечноеЧисло = ?(ДробнаяЧасть=0,ЦелаяЧасть,ЦелаяЧасть +1);//6
22 Aprobator
 
10.04.09
11:05
НужноеЧисло = Цел(ТвоеЧисло + 1);
23 Mitriy
 
10.04.09
11:06
(22) целые в пролете...
24 YurOK_51
 
10.04.09
11:07
(22)А если НужноеЧисло = 1,00 Тогда будет 2
25 Aprobator
 
10.04.09
11:07
(22) опс - забыл условие
Если Цел(ТвоеЧисло) <> ТвоеЧисло Тогда
    НужноеЧисло = Цел(ТвоеЧисло + 1)
Иначе
    НужноеЧисло = ТвоеЧисло;
КонецЕсли
26 Mitriy
 
10.04.09
11:08
(25) см (3)
27 Ненавижу 1С
 
гуру
10.04.09
11:08
(25) это все написано в (3)
28 Aprobator
 
10.04.09
11:09
(27) для меня это было слишком высоко. По сути - согласен :).
29 Ненавижу 1С
 
гуру
10.04.09
11:10
Хотя и это может быть не верно, смотря что понимать под целой частью
Математически Цел(-1.2)=-2, однако 1С выдает Цел(-1.2)=-1
30 Aprobator
 
10.04.09
11:10
(27) нефига не то - в (3) ошибка. Вместо Цел(Ч) + 1 надо Цел(Ч + 1)
31 Mitriy
 
10.04.09
11:11
(30) здОрово ))
32 НЕА123
 
10.04.09
11:12
(30)
хе...
Цел(Ч) + 1 = Цел(Ч + 1)
33 Ненавижу 1С
 
гуру
10.04.09
11:12
Цел(Ч) + 1 = Цел(Ч + 1)
34 НЕА123
 
10.04.09
11:13
(33)
плагиатор...
35 Ненавижу 1С
 
гуру
10.04.09
11:14
(34) ;-)
36 Aprobator
 
10.04.09
11:14
(33) о, блин, вот что значит руки вперед головы летят. Согласен - в (30) был неправ
37 Ненавижу 1С
 
гуру
10.04.09
11:14
так что насчет (29)
38 НЕА123
 
10.04.09
11:15
и все-таки (2) и (16) лучшее.
39 hhhh
 
10.04.09
11:16
(38) но не работает, если целое число.
40 НЕА123
 
10.04.09
11:19
(39)
проверь в табло.
41 ShoGUN
 
10.04.09
11:20
(39) Работает, потому что округлять можно по-разному.
42 Aprobator
 
10.04.09
11:22
ЦелаяЧастьЧисла = Цел(ТвоеЧисло);
Если ЦелаяЧастьЧисла = ТвоеЧисло Тогда
    НужноеЧисло = ТвоеЧисло;
Иначе
    ЗнакТвоегоЧисла = ?(ЦелаяЧастьЧисла < 0, -1, 1);
    ЧислоДляОкругления = ЦелаяЧастьЧисла * ЗнакТвоегоЧисла;
    ОкругленноеЧисло = Цел(ЧислоДляОкругления) + 1;
    НужноеЧисло = ОкругленноеЧисло * ЗнакТвоегоЧисла;
КонецЕсли;
43 Aprobator
 
10.04.09
11:23
(+42) это если из -2.2 надо -3 получить :)
44 vmv
 
10.04.09
11:25
//////////////////////////////// специальные режимы округления

Функция ОкруглитьКратно(Знач Значение, ОкруглениеДо)Экспорт

   // Значение должно быть неотрицательным числом любой разрядности
   // ОкруглениеДо должен быть целым неотрицательным числом!
   // Округление только в большую сторону - в этом смысл откругления кратно шагу,
   // даже если ОкруглениеДо = 0.
   
   Если Значение = 0 Тогда
       Возврат 0;
   КонецЕсли;
   
   Если ОкруглениеДо = 0 Тогда
       Возврат Окр(Значение, 4, 1);
   КонецЕсли;
   
   ЦелоеЗначение = Цел(Значение);
   Если ЦелоеЗначение = 0 Тогда
       Возврат ОкруглениеДо;
   КонецЕсли;
   
   // наличие дробной части "округляет" до целой части минимум на 1 единицу при не нулевом шаге.
   ЦелоеЗначение = ЦелоеЗначение + ?(Значение % ЦелоеЗначение = 0, 0, 1);

   // прибавляем к ЦелоеЗначение единицу до тех пор, пока оно не станет кратно ОкруглениеДо.
   Пока Истина Цикл
       Если ЦелоеЗначение % ОкруглениеДо = 0 Тогда
           Прервать;
       КонецЕсли;
       ЦелоеЗначение = ЦелоеЗначение + 1;
   КонецЦикла;
       
   Возврат ЦелоеЗначение;
   
КонецФункции
45 hhhh
 
10.04.09
11:26
(40) да, правда.
46 ShoGUN
 
10.04.09
11:28
Очередной пятничный конкурс извращений
47 НЕА123
 
10.04.09
11:29
автора куда-то потеряли... али испугался?
48 Aprobator
 
10.04.09
11:29
(46) встряска мозгов перед выходными :).
49 Aprobator
 
10.04.09
11:30
(47) у него наверное весь трафик после такого вышел
50 Aprobator
 
10.04.09
11:30
не знаю как со знаком, но вообще в (16) самое элегантное решение.
51 manyak
 
10.04.09
11:34
(47) см (18)
52 НЕА123
 
10.04.09
12:07
(51) пост (12) не понял.



Цел(ЧислоКакоето) + pow(0, pow(0, ЧислоКакоето % 1))

пятница...
53 НЕА123
 
10.04.09
12:07
не (12),а (18).
54 73
 
10.04.09
12:10
(53) Это типа спасибо ( tenx )