sqrt 함수의 인풋은 다양한 자료형으로 오버로딩이 돼있고
반환형 자체가 double로 알고있어요. (자바 기준)
그래서 sqrt(2) 를 하게되면 double형으로 1.41~~~이 나오구요.
그래서 d변수에 넣을 때 int로 넣어도 반환은 double로 되는데, 질문자님께서 애초에 d변수를 int형으로 선언하셨다면 캐스팅에 의해 실수부분이 버려졌을거라 생각해요.
정확하게 보시려면 해당 코드 IDE에서 실행하시고
d변수를 int형으로 선언하신 뒤 printf, double로 선언하신 뒤 printf를 해보시는게 제일 정확하지 않을까 싶어요.
ckwogus37 3년 전 1
사실 처음에는 int형으로 선언하고 제출하니 계속 틀렸다고 나왔습니다.
그래서 변수들을 선언할 때 double형으로 해 주었는데 바로 맞다고 나왔습니다.
그래서 왜 그런지 생각하다가 double형의 영향을 받는 곳이
51번 줄의 sqrt를 이용하여 두 터렛사이의 거리를 구하는 부분 이였습니다.
하지만 문제에서는 모든 값이 정수(혹은 자연수)로 나오기에
만약 int형으로 변수를 선언했다 하더라도
좌표의 위치도 정수고, 좌표로부터의 거리도 정수(자연수)라서
실수에서 정수로 변환되며 생기는 차이값이 존재하지 않을것이라 생각이 듭니다...
그렇다면 double형으로 바꾸어 줌으로써 어떤부분이 해결되는 건지 알려주시면 감사하겠습니다.