Показать сообщение отдельно
Старый 15.06.2011, 16:27   #1
Hagrael
Нуждающийся
 
Регистрация: 11.06.2011
Сообщений: 57
Написано 6 полезных сообщений
(для 7 пользователей)
Сообщение Проверка на четность

Я составил такую программу, проверяющую число на четность:
#include <iostream>

using namespace std;

int main() {
    int number;
    double half;

    cout << "Welcome to a program, with help of which"
    	<< "you will know, if your number is odd?" << endl;
    cout << "Please, input the number and press ENTER: ";
	cin >> number;
	half=number/2;
	cout << half << endl;
	if (half==static_cast<int>(half)) {
		cout << "Yes! Your number is even!";
	} else {
		cout << "No, your number isn't even.";
	}

    return 0;
}
Но почему-то half=5 при number=11, хотя переменная half относится к типу double. Когда я присваиваю тип double и к переменной number, то все нормализуется - half=5.5.

Знаю, что алгоритм не очень хороший, и что его решить можно при помощи рассмотрения остатка от деления числа на 2, но все же, почему некорректно работает этот код?
(Offline)
 
Ответить с цитированием