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 :: Чёт или нечет как определить?
Покинул форум
Сообщений всего: 7
Дата рег-ции: Апр. 2010
Помог: 0 раз(а)
Много уважаемые гуру!!!
требуется определить чётное числи или нечётное, каким оператором это можно сделать ? или делить на два без остатка, тогда как проверить целое оно или дробное???
Champion
Отправлено: 04 Апреля, 2010 - 18:49:52
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Целое - is_int(), а четное - да, делить на 2
Sergenius
Отправлено: 04 Апреля, 2010 - 18:52:57
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Апр. 2010
Помог: 0 раз(а)
Благодарю за мгновенность!!!
JustUserR
Отправлено: 05 Апреля, 2010 - 11:24:00
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Sergenius пишет:
Или делить на два без остатка, тогда как проверить целое оно или дробное
Для определения четности числа не обязательно делаить на два и проверять целость числа (ЧТо может дать дополнительные заморочки с типами данных - можете просто воспользоваться оператором получения остатка от деления % - таким образом если $x%2==0 то число $x четное
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
EuGen
Отправлено: 05 Апреля, 2010 - 11:29:08
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
- нетрудно догадаться, что это вызвано приведением типов, однако считать дробное число четным некорректно.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Champion
Отправлено: 05 Апреля, 2010 - 11:42:27
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Ну так is_int сначала для проверки, целое ли число, и %2 потом, чтобы узнать четное ли оно. Хотя да, из моего ответа это неочевидно.
JustUserR
Отправлено: 05 Апреля, 2010 - 11:52:00
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
EuGen пишет:
В данном случае Вы не совсем правы.
Полностью с вами согласен - здесь происходит автоматическое приведение типа в integer и соответственно неявная операция floor - а в языке со строгой типизацией такая конструкция просто вызвала бы ошибку
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
kochan10
Отправлено: 05 Апреля, 2010 - 16:08:01
Гость
Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009
Связано это с тем, что диапазон целых чисел ограничен 2^32-1 в PHP (maxlongint по сути), и, если число превышает по диапазону эту грань, оно приводится к вещественному типу (имеющему куда более широкий диапазон)
Конструкция с оператором % в данном случае отработает корректно.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
kochan10
Отправлено: 05 Апреля, 2010 - 16:27:16
Гость
Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009
Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010
Помог: 0 раз(а)
А не проще деление по модулю?
// Вычисляем будет ли остаток...
$ostatok=($a%2);
if ($ostatok!=0) // Если есть остаток. то не чётное (Добавление)
опс, Предыдущий топик уже подсказал этот вариант...
----- Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
jfr
Отправлено: 05 Апреля, 2010 - 16:38:23
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010 Откуда: Таджикистан, Худжанд
Помог: 0 раз(а)
[+]
не забудьте учитывать, что число 0 не считается четным (0%2=0)
markus4
Отправлено: 05 Апреля, 2010 - 16:56:34
Гость
Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010
Помог: 0 раз(а)
Исходя из законов математики, главное, чтобы на ноль не делил...
----- Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
jfr
Отправлено: 05 Апреля, 2010 - 16:59:59
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010 Откуда: Таджикистан, Худжанд
Помог: 0 раз(а)
[+]
markus4 пишет:
Исходя из законов математики, главное, чтобы на ноль не делил...
не на ноль не делил, а нуля не делили на два
markus4
Отправлено: 05 Апреля, 2010 - 17:11:30
Гость
Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010
Помог: 0 раз(а)
Понятно. Это я так, для политесу...
ноль разделить на 2 - тут ошибки не будет. Результат будет ноль.
А любое число разделить на ноль - результат будет бесконечность.
наша математика пока не умеет считать такое...
Интересно проверить, в php стоит запрет делить на ноль?
----- Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.