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

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

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

гы ...

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

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

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

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



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

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


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