Как выявить целое ли число? C++ - Вопросы по С+

Вопрос Как выявить целое ли число? C++

Регистрация
22 Ноя 2013
Сообщения
76
Репутация
0
Спасибо
0
Монет
0
Нужно чтобы программа определяла какой вид числа появляется от корня. например:
if (sqrt(x) != ...) {cout<<"целое число/нецелое"}
 
Регистрация
25 Сен 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
#include <iostream> using namespace std; bool fn(unsigned x) { return x == static_cast<unsigned>(pow(static_cast<unsigned>(sqrt(x)), 2)); } unsigned integer(const char* msg) { cout << msg; unsigned value; cin >> value; cin.ignore(cin.rdbuf()->in_avail()); return value; } int main() { while (true) puts(fn(integer("Unsigned: ")) ? "Integer" : "Real"); }
 
Регистрация
19 Сен 2013
Сообщения
113
Репутация
0
Спасибо
0
Монет
0
auto s = sqrt(x); if (fabs(s - round(s)) < eps) { /* целое */ } else { /* нецелое */ } eps подбирать по вкусу разумеется, метод далёк от точного, если тебе нужно определять, является ли целое число полным квадратом, лучше использовать другой способ
 
Регистрация
14 Сен 2013
Сообщения
80
Репутация
-3
Спасибо
0
Монет
0
У меня выражения y = sqrt(x); if (y == ceil(y)) всегда точно определяют, что х - это полный квадрат, а корень из него - целое число. Проверено в цикле for (double x = 1; x <= 1e10; x++) Ошибок нет.
 
Сверху Снизу