Имя: Пароль:
1C
1С v8
Проверка четности
,
0 Касандер72
 
02.02.12
11:54
Добрый день!
Подскажите, плиз, как можно проверить четность числа?
Заранее благодарю.
1 GLazNik
 
02.02.12
11:55
Число/2 = Цел(Число/2)
2 Smallrat
 
02.02.12
11:55
n%2=0
3 Ненавижу 1С
 
гуру
02.02.12
11:55
Число%2=0
4 Steel_Wheel
 
02.02.12
11:55
x % 2 = 0
5 Classic
 
02.02.12
11:56
Число%2 = 0
6 Ненавижу 1С
 
гуру
02.02.12
11:56
(1) тогда уже Цел(Число/2)*2=Число
7 Alex S D
 
02.02.12
11:57
ппц.. это ж еще в школе проходят)
8 Живой Ископаемый
 
02.02.12
11:59
в Запросе? в управляемых формах? на АРМ-процессоре?
9 Касандер72
 
02.02.12
11:59
Всем спс!!!
Ещё более буду благодарен тому, кто кинет код функции
старого совдеповского ГОСТовского метода округления
- в зависимости от четности последнего округляемого разряда, например:
Окр(1,845) = 1,84 или Окр(1,765) = 1,76 то бишь: 1,5 = 1
Окр(1,755) = 1,76 или Окр(1,635) = 1,64 то бишь: 1,5 = 2
10 Ненавижу 1С
 
гуру
02.02.12
12:02
(9) нечетные цифры увеличиваем, четные оставляем
11 Reset
 
02.02.12
12:06
А 2.5 это четное или нечетное?
12 Касандер72
 
02.02.12
12:06
(10) ыыы, знаю - мне код нужен! - может у кого завалялся?
13 Maxus43
 
02.02.12
12:07
где решения запросом? чо то как то однообразно всё
14 Касандер72
 
02.02.12
12:09
(11) ОкрГОСТа(2.5,0) = 2 !
15 Reset
 
02.02.12
12:12
Функция Четное(ч)
?(Найти(ч,","),"hz",?(Найти("02468",Прав(ч,1)),Истина,Ложь)));
КонецФункции
// Не ну а чо.
16 Reset
 
02.02.12
12:17
(14) Т.е., по госту 2.7 - Не четное, а 2.5 - четное (не, я на самом деле слаб в гостах).
17 Касандер72
 
02.02.12
12:25
(16) рассматривается четность последней округляемой цифры
смотри пример (9)
18 Касандер72
 
02.02.12
12:34
Лан, подсказчики лавайте, мож кто лучше предложит, чем это:


Функция ОкрГОСТа (перЗначение,перРазрядность) Экспорт
   
   Если перРазрядность < 0 Тогда
       модЗначение = перЗначение;
       Для Счетчик = 1 По перРазрядность Цикл
           модЗначение = модЗначение * 10;
       КонецЦикла;
       модЗначение = Цел(модЗначение)/2;
       перРежим = ?(Цел(модЗначение)=модЗначение,0,1);
       Возврат Окр(перЗначение,перРазрядность,перРежим);
   ИначеЕсли перРазрядность = 0 Тогда
       модЗначение = Цел(перЗначение)/2;
       перРежим = ?(Цел(модЗначение)=модЗначение,0,1);
       Возврат Окр(перЗначение,перРазрядность,перРежим);
   ИначеЕсли перРазрядность > 0 Тогда
       модЗначение = перЗначение;
       Для Счетчик = 1 По перРазрядность Цикл
           модЗначение = модЗначение * 10;
       КонецЦикла;
       модЗначение = Цел(модЗначение)/2;
       перРежим = ?(Цел(модЗначение)=модЗначение,0,1);
       Возврат Окр(перЗначение,перРазрядность,перРежим);
   КонецЕсли;
       
КонецФункции // ОкрГОСТа (перЗначение,перРазрядность)
19 НЕА123
 
02.02.12
12:35
ВерхЧ = Окр(Ч, Разрядность, РежимОкругления.Окр15как20);    
   НизЧ = Окр(Ч, Разрядность, РежимОкругления.Окр15как10);
   Если ВерхЧ = НизЧ Тогда //ниче не делаем
       Тогда
       РезЧ = НизЧ;
   ИначеЕсли Найти("02468", Прав(""+НизЧ,1))>0 Тогда //было чет, не увеличенное берем
       РезЧ = НизЧ;
   Иначе
       РезЧ = ВерхЧ;    
   КонецЕсли;
20 НЕА123
 
02.02.12
12:38
+(19)
ээээ.... про нули че-то забыл.
21 НЕА123
 
02.02.12
12:41
ВерхЧ = Окр(Ч, Разрядность, РежимОкругления.Окр15как20);    
   НизЧ = Окр(Ч, Разрядность, РежимОкругления.Окр15как10);
   Если ВерхЧ = НизЧ Тогда //ниче не делаем
       Тогда
       РезЧ = НизЧ;
   ИначеЕсли Найти("02468", Прав(Формат(НизЧ, "ЧДЦ"+Разрядность),1))>0 Тогда //было чет, не увеличенное берем
       РезЧ = НизЧ;
   Иначе
       РезЧ = ВерхЧ;    
   КонецЕсли;
22 Reset
 
02.02.12
13:47
(18) Без богомерзкого анализа строки, но с богомерзкой pow:


Функция ОкрГОСТа(перЗначение,перРазрядность)
   ч10=Окр(перЗначение,перРазрядность,РежимОкругления.Окр15как10);
   ч20=Окр(перЗначение,перРазрядность,РежимОкругления.Окр15как20);
   ч_1=Окр(перЗначение,перРазрядность-1,РежимОкругления.Окр15как10);
   Возврат (ч10
           +?(ч20-ч10,
               ?(ч10>ч_1,ч10-ч_1,ч_1-ч10) %(2/pow(10,перРазрядность))
               ,0);
КонецФункции;
23 Reset
 
02.02.12
13:48
+(22) Пришел с обеда. Извините за ап.
24 Касандер72
 
02.02.12
15:53
(22) здесь по ходу что-то пропущено, но смысла не лишено
25 НЕА123
 
03.02.12
09:19
Функция ОкрГОСТа(перЗначение,перРазрядность)
   возврат  ОКР(перЗначение, перРазрядность,
             ?( Цел(перЗначение * pow(10, перРазрядность)) %2 = 0,
                РежимОкругления.Окр15как10,
                РежимОкругления.Окр15как20))
КонецФункции