auto s = sqrt(x); if (fabs(s - round(s)) < eps) { /* целое */ } else { /* нецелое */ } eps подбирать по вкусу разумеется, метод далёк от точного, если тебе нужно определять, является ли целое число полным квадратом, лучше использовать другой способ
У меня выражения y = sqrt(x); if (y == ceil) всегда точно определяют, что х - это полный квадрат, а корень из него - целое число. Проверено в цикле for (double x = 1; x <= 1e10; x++) Ошибок нет.
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.