Я составил такую программу, проверяющую число на четность:
#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, но все же, почему некорректно работает этот код?