![]() |
![]() |
![]() |
|
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 - спасибо! Я же помню (где-то глубоко в могзе), что что-то есть в типовых :))))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |