인프런 커뮤니티 질문&답변
sqrt() 질문
작성
·
146
0
#include <iostream>
#include <cmath>
using namespace std;
long long solution(long long n) {
long long answer = 0;
long long x = sqrt(n);
cout << x << endl;
cout << sqrt(n) << endl;
cout << (int)x << endl;
if (x == (int)x)
{
answer = pow(x + 1, 2);
}
else
{
answer = -1;
}
return answer;
}
int main()
{
long long n;
cin >> n;
solution(n);
return 0;
}
프로그래머스 정수 제곱근 판별하는 문제를 풀던 중 질문이 생겨 올립니다.
long long x = sqrt(n)으로 받았을 때
cout << x << endl;
cout << sqrt(n) << endl;
두 결과가 다른 이유를 모르겠습니다.
답변 1
1
큰돌
지식공유자
안녕하세요. ㅎㅎ
sqrt는 기본적으로 double형을 반환합니다.
double sqrt (double x);
이런식으로 함수가 설계가 되어있어요.
그래서 long long으로 할당하면 "정수형"으로 선언한 뒤 출력하는 것이고 그냥 출력하면 double 형으로 출력하게 되서 차이점이 생기는 것입니다.
감사합니다.






long long 에 대해 잘못 알고 있었네요.
답변해주셔서 감사합니다!