Как проверить чётность числа с плавающей запятой?
Обратите внимание, что переменная numbers имеет тип float, но я проверил его на четность)))))). P.S. c++ , dev-c++.
#include
#include
#include
#include
>
int main()
setlocale(0, «»);
srand(time(NULL));
float numbers;
int size;
int *arraySize;
arraySize=new int [size];
cout cin>>size;
float numberArray[size];
cout filling( numberArray, numbers, size);
>
Решения вопроса 0
Ответы на вопрос 6
Чётность в теории чисел — характеристика целого числа
Ответ написан более трёх лет назад
Нравится 17 1 комментарий
Вероятно, имелась в виду чётность числа, хранящегося в переменной типов float или double , которое само по себе вполне может быть целым, например 5.0 .
Просто люблю качественно работать
Ну приведите к целому если не дробное
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Tsiren Naimanov @ImmortalCAT
эм
а если до множить до целого числа
и x%2==0
будет ли работать?)
ПЫСЫ
можно сделать так
var myvar = 124124,2541; var strmyvar = myvar as string; var in = strmyvar[strmyvar.Count-1]; bool result = in%2==0;
долгий код, но его можно сократить 🙂
всего лишь взять ласт цифру и по ней судить о её кратности
Ответ написан более трёх лет назад
Можно округлить в большую/меньшую сторону или до ближайшего целого (в зависимости от потребностей ТС), а после уже проверять на четность.

Tsiren Naimanov @ImmortalCAT
mletov: нет, при округлении потеряется всё к черту 🙂

Вещественное число — это всегда приближённое значение, его нельзя сравнивать == . ни с каким значением, и с 0 особенно.

инженер, программист, преподаватель
Вещественное число не может быть чётным или нечётным. Вещественное число — это всегда приближённое значение (хотя бы поэтому, его остаток от деления на 2 всегда будет не нулевой).
Ответ написан более трёх лет назад
oldzhas777 @oldzhas777
Зацени и заметь, что переменная numbers имеет тип float, но я проверил его на четность. P.S. c++ , dev-c++.
#include
#include
#include
#include
>
int main()
setlocale(0, «»);
srand(time(NULL));
float numbers;
int size;
int *arraySize;
arraySize=new int [size];
cout cin>>size;
float numberArray[size];
cout filling( numberArray, numbers, size);
>
Заводчик кардиганов
double y=x/2; bool isEven=(fabs(y-round(y)) < EPS);
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Из контекста следует, что речь идёт о целых числах, представленных в вещественном формате. Если так, тогда переводить в целое число, как выше советовали, - это не универсальный метод, поскольку число может выходить за пределы разрядной сетки целого типа. Проверять нужно следующим образом:
0.5*x==round(0.5*x)
Ответ написан более года назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C
- +1 ещё
Возможно ли как-то использовать обычную функцию заместо макро-функции?
- 2 подписчика
- 5 часов назад
- 109 просмотров
Как проверить число на четность?
Если нужна не четность, а нечетность - соответственно, x % 2 != 0 .
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
ответ дан 7 сен 2011 в 1:54
9,243 1 1 золотой знак 20 20 серебряных знаков 37 37 бронзовых знаков
Говорить TypeError: not all arguments converted during string formatting Несоответствие типов что ли, да?
7 сен 2011 в 2:08
Я так понял, это уже речь о некой модификации моего примера? Тогда, пожалуйста, код в студию - телепаты в отпуске. Приведенная ошибка появляется если в строке было одно число плейсхолдеров (%d и иже с ним), а справа оператору % передали меньше.
7 сен 2011 в 2:30
Похоже, догадался о чем речь. Если на x % 2 оно так ругается, то x - строка, так что, да, проблема в типах. Для них оператор % имеет другой, не связаный с остатком от деления, смысл.
Что значит деление по модулю?
Хорошо, "только зачем же такие сложности в проверке числа на чётность, не проще ли использовать целые, понятные числа?" Теперь понятно, зачем используется деление с остатком?
18th Dec 2019, 7:33 AM
Yaroslav Vernigora
Например тебе надо определить число чётное или нет? Тогда код будет такой: Введите число (х); ЕСЛИ (х % 2 == 0) ВЫВОД("число х - четное) ИНАЧЕ ("число х - нечетное") Т.е. если число делённое на 2 без остатка, то значит оно чётное. Иначе - нечётное.
18th Dec 2019, 4:44 AM
Yaroslav Vernigora
Начни с проверки числа на чётность. Подумай, какие есть характеристики у четных чисел и у нечетных. Как их различить?
18th Dec 2019, 6:03 AM
Yaroslav Vernigora
float и double это десятичные дроби, отличаются размером занимаемой памяти(пр 4 и 8 байт соответсвенно), числа double более точные(диапозон от 1.7е-308 до 1.7е+308, в то время как у float всего 3.4е-38 до 3.4е+38), необходимость применения исходит из конкретной задачи.
18th Dec 2019, 9:56 AM
Ну а % еще можно использовать чтобы гарантированно получить число из заданного диапозона, например точка ползет в край экрана, как только заполза за край(размер экрана мы знаем) мы можем пустить ее бежать с другого края(соответсвующего 0 координат по оси) просто взяв остаток от деления на ширину (что-то типо координата по горизонтали%ширина экрана - точка гарантированно будет где-то в поле видимости)
18th Dec 2019, 10:00 AM
А еще при помощи остатка от деления можно реализовать много интересного. Нпаример, дано 10000 секунд и надо это значение вывести корректно в виде Х часов Y минут и Z секунд
18th Dec 2019, 8:59 PM
Дело не в этом. Придумай пожалуйста алгоритм проверки числа на четность как в моём примере. Напиши реализацию кода, как ты её видишь
18th Dec 2019, 5:57 AM
Yaroslav Vernigora
Я сам не очень понимаю где ещё это деление используется, но это самый доходчивый пример
18th Dec 2019, 9:09 AM
Yaroslav Vernigora
Duolingo для мобильников puzzle-english.com
18th Dec 2019, 9:27 AM
Yaroslav Vernigora
Или тебе надо узнать остаток, или отсечь кусок. Таким образом, в теории, к примеру, можно рассчитать места хранения массивов и списков. Такое в общем
Вычисления
Вы считаете, что арифметические операции - это просто? Пересчитайте. На самом деле, всё не так страшно, но расслабляться не стоит. Начнём со всем знакомой четверки:
print ( 10 + 10 )
# 10
print ( 10 - 5 )
# 5
print ( 11 * 7 )
# 77
print ( 10 / 2 )
# 5.0
Никаких неожиданностей, правда? Не совсем, посмотрите внимательно на операцию деления. Заметили? Мы разделили целое число на его делитель, но несмотря на это, результат имеет тип float. Взглянем на операцию деления чуть более пристально:
print ( 10 / 2 )
# 5.0
print ( 100 / 3 )
# 33.333333333333336
print ( 21 / 4 )
# 5.25
print ( 23 / 7 )
# 3.2857142857142856
Иногда можно увидеть такие приколы:
print ( 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 )
# 0.7999999999999999
print ( 0.1 + 0.2 )
# 0.30000000000000004
print ( 7 / 3 )
# 2.3333333333333335
Еще немного математики. Математика в каждый дом!
# Возведение в степень
print ( 10 * * 2 )
# 100
print ( 2 * * 4 )
# 16
print ( 3 * * 0.5 )
# 1.7320508075688772
print ( 3 * * -2 )
# 0.1111111111111111
# Остаток от деления
print ( 11 % 4 )
# 3
print ( 101 % 7 )
# 3
print ( 34 % 5 )
# 4
# Деление нацело
print ( 20 // 4 )
# 5
print ( 129 // 11 )
# 11
print ( 100 // 61 )
# 1
Операции сравнения в python
Операции сравнения в отличие от арифметические имеют всего два результата: True и False. Чаще всего такие операции используются в условии циклов, условных оператов, а также в некоторых функциях, например, filter.
# Операция равенства: True, если X равен Y
print ( 10 == 10 )
# True
print ( 666 == 661 )
# False
# Операция неравенства: True, если X не равен Y
print ( 666 != 661 )
# True
print ( 666 != 666 )
# False
# Операция больше: True, если X больше Y
print ( 120 > 2 )
# True
print ( 1000 > 1999 )
# False
# Операция меньше: True, если X меньше Y
print ( 121 120 )
# False
print ( 0 1 )
# True
# Операция меньше или равно: True, если X меньше или равен Y
print ( 6 6 )
# True
print ( 5 2 )
# False
# Операция больше или равно: True, если X больше или равен Y
print ( 1000 >= 10000 )
# False
print ( 9999 >= 9999 )
# False
Логические операции
Логические операции, как и операции сравнения, имеют всего два возможных результата: True и False. Используются для объединения операций сравнения в условиях циклов и условных оператов
# Оператор "and" или конъюнкция.
# True, если и выражение X, и выражение Y равны True
print ( 10 == 10 and 10 > 2 )
# True
print ( 666 == 661 and 9 > 0 )
# False
# Оператор "or" или дизъюнкция.
# True, если или выражение X, или выражение Y равны True
print ( 666 == 661 or 9 > 0 )
# True
print ( 666 == 661 or 9 0 )
# False
# Оператор " not " или инверсия меняет значение на противоположное.
# True, если выражение X равно False
print ( not 120 > 2 )
# False
print ( not 1000 999 )
# True
print ( not ( 121 121 and 10 == 2 ))
# True
Округление чисел в python
Всё дело в округлении! В python есть несколько замечательных функций, которые округляют число до указанного знака. Одной из таких функций является round :
pi = 3.14159265358979323846264338327
print ( round (pi, 1 ))
# 3.1
print ( round (pi, 2 ))
# 3.14
print ( round (pi, 3 ))
# 3.12
print ( round (pi, 4 ))
# 3.1416
print ( round (pi, 10 ))
# 3.1415926536
print ( round (pi, 15 ))
# 3.141592653589793
Рассмотрим любопытный пример:
print ( round ( 2.5 ))
# 2
print ( round ( 3.5 ))
# 4
Если на вашем лице застыл немой вопрос: "почему?", то я вас понимаю. В школе нас учили, что дроби 1.1, 1.2, 1.3, 1.4 округляются до единицы, а 1.5, . 1.9 до двойки. Но python думает по-другому. Есть два типа округления: арифметическое и банковское. Именно арифметическому округлению вас учили в школе. Python использует как раз-таки банковское округление, его еще называют округлением до ближайшего четного. Приведу еще несколько примеров:
print ( round ( 10.51213 ))
# 11
print ( round ( 23.5 ))
# 24
print ( round ( 22.5 ))
# 22
Примеры решения задач
Есть N оранжевых конфет и K учеников, сколько достанется каждому из них, если разделить их поровну? Сколько конфет останется после дележа?
n = int ( input ( 'Введите количество конфет: ' ))
k = int ( input ( 'Введите количество учеников: ' ))
a = n // k
b = n % k
print ( 'Каждому по' , a)
print ( 'Осталось' , b)
Даны стороны прямоугольника a и b. Вычислите периметр, площадь и диагональ прямоугольника.
a = int ( input ( 'Введите a: ' ))
b = int ( input ( 'Введите b: ' ))
s = a * b
p = 2 * (a + b)
d = (a * * 2 + b * * 2 ) * * 0.5
print ( 'Площадь:' , a)
print ( 'Периметр:' , b)
print ( 'Диагональ:' , c)
Дано число секунд n на секундомере. Посчитайте прошедших минут и секунд.
n = int ( input ( 'Введите n: ' ))
m = n // 60
s = n % 60
print ( str (m) + ':' + str (s))
Решение задач
1. Дано целое число A. Проверить истинность высказывания: "Число A является четным".
2. Дано целое число A. Проверить истинность высказывания: "Число A является нечетным".
3. Даны два целых числа: A, B. Проверить истинность высказывания: "Числа A и B имеют одинаковую четность".
4. Даны три целых числа: A, B, C. Проверить истинность высказывания: "Хотя бы одно из чисел A, B, C положительное".
5. Дано четырехзначное число. Проверить истинность высказывания: "Данное число читается одинаково слева направо и справа налево".
6. Дано число секунд n на часах. Посчитайте прошедших часов, минут и секунд.
7. Дано натуральное число. Выведите его последнюю цифру.
8. Дано положительное действительное число X. Выведите его дробную часть.
9. Дано положительное действительное число X. Выведите его первую цифру после десятичной точки.
10. Пирожок в столовой стоит a рублей и b копеек. Определите, сколько рублей и копеек нужно заплатить за n пирожков. Программа получает на вход три числа: a, b, n, и должна вывести два числа: стоимость покупки в рублях и копейках.
11. Дано натуральное число. Найдите число десятков в его десятичной записи.
12. Дано двузначное число. Найдите сумму его цифр.
13. Дано трехзначное число. Найдите сумму его цифр.
14. Дано трехзначное число. Проверить истинность высказывания: "Все цифры данного числа различны".
15. Дано трехзначное число. Проверить истинность высказывания: "Цифры данного числа образуют возрастающую или убывающую последовательность".
16. С начала суток прошло N секунд (N - целое). Найти количество часов, минут и секунд на электронных часах.
