Регистрация
19 Дек 2013
Сообщения
74
Репутация
0
Спасибо
0
Монет
0
Как узнать, является ли sqrt(x) числом типа int?
То есть, если
sqrt(25) == int // √25=5
cout << "true"

if sqrt(20) == int // √20 = 4.47
cout << false
 
Функция sqrt и принимает и возвращает тип double. Другое дело, что к типу double будет неявно приведен любой числовой тип. То что после sqrt(25) в консоль выводится 5, равным счётом ни о чём не говорит. Результат зависит от внутренней реализации и на различных компиляторах может отличаться.
 
"числом типа int" - не совсем корректное определение если имелось в виду проверить, является ли x квадратом целого числа, то pow((int)sqrt(x),2)==x
 
Как узнать, является ли sqrt(x) числом типа int?
То есть, если
sqrt(25) == int // √25=5
cout << "true"

if sqrt(20) == int // √20 = 4.47
cout << false
Ну уже говорили про double, а так то можно сделать следующим образом, так как диапазон int это целые числа от -2 147 483 648 до 2 147 483 647
[THIDE="0"]#include <iostream>
#include <math.h>

using namespace std;
int main(){
setlocale(LC_ALL, "Russian");
int a;
cin>>a;
if((sqrt(a) >= -2147483648LL && sqrt(a) <= 2147483647LL)) {

cout<< ((int)sqrt(a) == sqrt(a) ? "int" : "вещественное") <<endl;
}
else
{
cout<< ((int)sqrt(a) == sqrt(a) ? "целое" : "вещественное") <<endl;
}
cout<<sqrt(a);
}[/THIDE]
 
Последнее редактирование:
Назад
Сверху