Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Чёт или нечет как определить?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Неужели такого не придумали...
Sergenius
Отправлено: 04 Апреля, 2010 - 18:47:28
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




Много уважаемые гуру!!!
требуется определить чётное числи или нечётное, каким оператором это можно сделать ? или делить на два без остатка, тогда как проверить целое оно или дробное???
 
 Top
Champion Супермодератор
Отправлено: 04 Апреля, 2010 - 18:49:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Целое - is_int(), а четное - да, делить на 2
 
 Top
Sergenius
Отправлено: 04 Апреля, 2010 - 18:52:57
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




Благодарю за мгновенность!!!
 
 Top
JustUserR
Отправлено: 05 Апреля, 2010 - 11:24:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Sergenius пишет:
Или делить на два без остатка, тогда как проверить целое оно или дробное
Для определения четности числа не обязательно делаить на два и проверять целость числа (ЧТо может дать дополнительные заморочки с типами данных Улыбка - можете просто воспользоваться оператором получения остатка от деления % - таким образом если $x%2==0 то число $x четное


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
EuGen Администратор
Отправлено: 05 Апреля, 2010 - 11:29:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




В данном случае Вы не совсем правы.
Например,
PHP:
скопировать код в буфер обмена
  1.  
  2. $x=8.5;
  3. echo($x%2); //returns '0'
  4.  

- нетрудно догадаться, что это вызвано приведением типов, однако считать дробное число четным некорректно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Champion Супермодератор
Отправлено: 05 Апреля, 2010 - 11:42:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Ну так is_int сначала для проверки, целое ли число, и %2 потом, чтобы узнать четное ли оно. Хотя да, из моего ответа это неочевидно.
 
 Top
JustUserR
Отправлено: 05 Апреля, 2010 - 11:52:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




EuGen пишет:
В данном случае Вы не совсем правы.
Полностью с вами согласен - здесь происходит автоматическое приведение типа в integer и соответственно неявная операция floor - а в языке со строгой типизацией такая конструкция просто вызвала бы ошибку Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
kochan10
Отправлено: 05 Апреля, 2010 - 16:08:01
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




 
 Top
EuGen Администратор
Отправлено: 05 Апреля, 2010 - 16:17:18
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Вы тоже ошибаетесь:

Связано это с тем, что диапазон целых чисел ограничен 2^32-1 в PHP (maxlongint по сути), и, если число превышает по диапазону эту грань, оно приводится к вещественному типу (имеющему куда более широкий диапазон)
Конструкция с оператором % в данном случае отработает корректно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
kochan10
Отправлено: 05 Апреля, 2010 - 16:27:16
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




ясно) не подумал об этом даже.
 
 Top
markus4
Отправлено: 05 Апреля, 2010 - 16:34:35
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




А не проще деление по модулю?
// Вычисляем будет ли остаток...
$ostatok=($a%2);
if ($ostatok!=0) // Если есть остаток. то не чётное
(Добавление)
опс, Предыдущий топик уже подсказал этот вариант...

(Отредактировано автором: 05 Апреля, 2010 - 16:37:04)



-----
Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
 
 Top
jfr
Отправлено: 05 Апреля, 2010 - 16:38:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


не забудьте учитывать, что число 0 не считается четным (0%2=0) Улыбка
 
 Top
markus4
Отправлено: 05 Апреля, 2010 - 16:56:34
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Исходя из законов математики, главное, чтобы на ноль не делил... Улыбка


-----
Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
 
 Top
jfr
Отправлено: 05 Апреля, 2010 - 16:59:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


markus4 пишет:
Исходя из законов математики, главное, чтобы на ноль не делил... Улыбка


не на ноль не делил, а нуля не делили на два Улыбка
 
 Top
markus4
Отправлено: 05 Апреля, 2010 - 17:11:30
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Понятно. Это я так, для политесу...
ноль разделить на 2 - тут ошибки не будет. Результат будет ноль.
А любое число разделить на ноль - результат будет бесконечность.
наша математика пока не умеет считать такое...
Интересно проверить, в php стоит запрет делить на ноль?


-----
Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB