Имя: Пароль:
1C
1C 7.7
v7: Округление числа
0 Масянька
 
24.08.11
09:51
Доброе утро!
Подскажите, как можно округлить число в большую сторону:
1,1 = 2
Спасибо.
1 Масянька
 
24.08.11
09:51
Блин - ЧИСЛО :)))
2 forforumandspam
 
24.08.11
09:52
Окр(<?>,,)
Синтаксис:
Окр(<Число1>,<Число2>,<Способ>)
Назначение:
Возвращает значение результата округления.
Параметры:
<Число1> - числовое выражение, значение которого надо округлить;
<Число2> - число значащих цифр дробной части или
минус число не значащих младших цифр целой части (не обязателен, по умолчанию - 0);
<Способ> - способ округления граничных значений: 0 - если 1.5 округляется до 1, 1 - если 1.5 округляется до 2 (не обязателен, по умолчанию принимается значение, установленное в окне свойств конфигурации: Конфигурация/Задача/Свойства страница Задача, поле Округление).
3 forforumandspam
 
24.08.11
09:52
(0) И это при стаже, больше моего.
4 ДенисЧ
 
24.08.11
09:52
Окр(ч+0.5, 1)
5 Масянька
 
24.08.11
09:54
(2) Не надо умничать - синтаксис-помощником я пользоваться умею.
Мне надо округлять - 1,1 = 2. То бишь - если есть после запятой что-то, то число округляется в большую сторону.
6 1Сергей
 
24.08.11
09:54
Цел(ч+0.99999999999999999999999999999999)

:)
7 andrewks
 
24.08.11
09:54
(4) ашипка! :)
8 forforumandspam
 
24.08.11
09:55
Если Число1 > Цел(Число1) Тогда
       Число1 = Цел(Число1)+1;
   КонецЕсли;
9 zak555
 
24.08.11
09:55
(4) -100 подставь
10 forforumandspam
 
24.08.11
09:55
+(8) Ну и знаки учесть.
11 andrewks
 
24.08.11
09:56
(8) тоже ашипка
12 Масянька
 
24.08.11
09:56
(6) Спасибо! С утра туплю - понимаю, что легко... А как забыла :))))
13 andrewks
 
24.08.11
09:56
(6) и у тебя ашипка
14 forforumandspam
 
24.08.11
09:56
(11) Где?
15 1Сергей
 
24.08.11
09:57
(13) да, ты сам ашипка природы
16 andrewks
 
24.08.11
09:57
(14) ты уже исправился
17 1Сергей
 
24.08.11
09:59
(16) где ашипка в (6)-то?
18 ДенисЧ
 
24.08.11
10:02
(7) про знаки ничего не было сказано. Поэтому по умолчанию - положительные.
19 Масянька
 
24.08.11
10:02
Получается: надо выделить целую и дробную часть, если дробная часть больше 0, то к целой добавить 1.

PS Как-то не очень элегантно :(
20 1Сергей
 
24.08.11
10:05
(19) Чем тебе вариант (4) не угодил?
(18) у тебя запятая пропущена
21 andrewks
 
24.08.11
10:08
(15) хочешь поговрить об этом?
(18) а про кол-во знаков после запятой тоже ничего не было сказано? ;-)
(17) например, Цел(-9.9+0.99999999999999999999999999999999) = -8, а д.б. -9
22 ДенисЧ
 
24.08.11
10:08
(21) учу читать вопрос "1,1 = 2"
23 andrewks
 
24.08.11
10:09
(22) даблин...
Окр(1.1+0.5, 1) = 1.6
24 1Сергей
 
24.08.11
10:10
(23) ашипка
25 Масянька
 
24.08.11
10:13
Число вычисляется в процессе работы (1.1, 2.34, 5.86 и т.д.)
Мне надо получить целое число, но 1.1=2, 2.34=3, 5.86=6
26 Масянька
 
24.08.11
10:13
Количество знаков после запятой - не важно. Важно, что если после запятой есть что-то, то нужно добавить к целой 1.
27 1Сергей
 
24.08.11
10:14
(25) Окр(1.1+0.5, 0, 1)
28 Масянька
 
24.08.11
10:14
А получить дробную часть - в 7.7 нет :(
29 1Сергей
 
24.08.11
10:15
(28) Ч - Цел(Ч)
30 Масянька
 
24.08.11
10:15
(27) А если получилось число 2.84?
2.84+0.5=3.34
31 1Сергей
 
24.08.11
10:16
(30) проверь
32 Масянька
 
24.08.11
10:16
(29) Не эстетично - зато дешево, надежно и практично (С)
Значит - лучше никак :(
33 andrewks
 
24.08.11
10:17
(27) Окр(1+0.5, 0, 1) = 2
34 1Сергей
 
24.08.11
10:17
(32) опять двадцать пять... Чем (27) не угодило?
35 1Сергей
 
24.08.11
10:18
(33) хм... ну, тогда только (6) :)
36 andrewks
 
24.08.11
10:19
(35) про (6) я в (21) написал
37 1Сергей
 
24.08.11
10:20
(36) про отрицательные никто ничего не говорил, но можно сделать поправку и на них
38 1Сергей
 
24.08.11
10:21
Цел(?(ч<0,ч-0.99999999999999999999999999999999,ч+0.99999999999999999999999999999999))
39 Масянька
 
24.08.11
10:21
Да вроде работает (27) :)))
отрицательных нет.
Спасибо, дядьки :)))
40 PuhUfa
 
24.08.11
10:21
(26) а просто?
?((Ч-Цел(Ч)) <> 0,Цел(Ч)+1,Ч);
41 andrewks
 
24.08.11
10:21
(37) в том-то и дело, что не говорил никто про положительные (!)

мы про математику, или где? :)
42 andrewks
 
24.08.11
10:24
(39) читай (33) внимательно
43 andrewks
 
24.08.11
10:26
для целочисленного округления вроде так должно взлететь:

?(Ч=Цел(Ч),Ч,Окр(Ч+0.5,0,0))
44 1Сергей
 
24.08.11
10:27
(43) см (41) :)
45 andrewks
 
24.08.11
10:29
(44) разверни
46 1Сергей
 
24.08.11
10:30
(45) ?(-1.1=Цел(-1.1),-1.1,Окр(-1.1+0.5,0,0)) = -1
47 andrewks
 
24.08.11
10:32
(46) ога. и это правильно. хочешь оспорить?
48 1Сергей
 
24.08.11
10:36
(47) да, должно быть 2
49 andrewks
 
24.08.11
10:37
(48) ознакомься:

wiki:Округление

Округление к большему (округление к +?, округление вверх, англ. ceil) — если обнуляемые знаки не равны нулю, предшествующий знак увеличивают на единицу, если число положительное, или сохраняют, если число отрицательное. В экономическом жаргоне — округление в пользу продавца, кредитора (лица, получающего деньги). В частности, 2,6 ? 3, ?2,6 ? ?2.
50 Ёпрст
 
гуру
24.08.11
10:43
(0) дарю:
Функция глОкруглить(Числ, ПорядокОкругления) Экспорт

во всех типовых (ТиС, комплексная)..
51 andrewks
 
24.08.11
10:44
(50) это неспортивно! :)
52 Ёпрст
 
гуру
24.08.11
10:44
+50
// глОкруглить(Числ, ПорядокОкругления)
//
// Параметры:
//  Числ              - исходное число
//  ПорядокОкругления - элемент перечисления Порядки окгугления:
//  "шаг" округления (0.01 (арифметическое), 0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100)
//
// Возвращаемое значение:
//  Округленное по заданному порядку значение
//
// Описание:
//  Округляет число вверх по заданному порядку. Т.е число 123.37 при порядке
//  округление 0.5 превратиться в 123.50, а число 0.1 при порядке округления
//  5 станет равным 5.
//  Если значение перечисления ОкрТочно, то округляет арифметически до 0.01
//
Функция глОкруглить(Числ, ПорядокОкругления) Экспорт
53 Ёпрст
 
гуру
24.08.11
10:45
(51) это не знание типовых конф.
54 andrewks
 
24.08.11
10:46
вот что получается для общего случая (если не принимать во внимание "нестандартные" округления до 0,50 р, 5 р. и т.п. )

// Ч - округляемое число
// КоэфОкр - коэффициент округления
// 1 - до целого
// 0.1 - до 2-го знака после запятой
// 10 - до десяток
// и т.д.
Функция ОкрЭконБольш(Знач Ч,Знач КоэфОкр=1)
   КоэфОкр=?(КоэфОкр=0,1,КоэфОкр);
   Ч=Ч/КоэфОкр;
   Возврат ?(Ч=Цел(Ч),Ч,Окр(Ч+0.5,0,0))*КоэфОкр;
КонецФункции
55 andrewks
 
24.08.11
10:48
кстати, для 0,5 и 5 тоже работает
56 andrewks
 
24.08.11
10:49
(53) если есть время, и можно написать лучше, чем в типовой, почему бы и нет?
57 Масянька
 
24.08.11
12:50
Ёпрст3 - спасибо! Я же помню (где-то глубоко в могзе), что что-то есть в типовых :))))
Основная теорема систематики: Новые системы плодят новые проблемы.