인프런 커뮤니티 질문&답변

qptm님의 프로필 이미지
qptm

작성한 질문수

홍정모의 따라하며 배우는 C언어

3.12 부동소수점형의 한계

3.12 강의 수학적으로 존재하지 않는 식을 강행했을 때

작성

·

203

·

수정됨

1

안녕하세요. 비주얼 스튜디오에서 선생님과 똑같이 asinf() 코드를 작성하고 실행을 했는데 선생님 화면에서 나온

1.570796

-nan(ind)

대신에

8096.000000

8096.000000

이렇게 나옵니다. 뭐가 잘못된걸까요?

답변 1

1

안녕하세요, 답변 도우미 Soobak 입니다.

 

int main()
{
  float f = asinf(1.0f);
  printf("%f\n", f);

  f = asinf(2.0f);
  printf("%f\n", f);

  return 0;
}

위의 예제 코드로 직접 실행해보니, 강의와 동일한 결과(1.570796, -nan)가 출력되는 것을 확인했습니다.

혹시, 인수로 작성하신 값에 오타가 발생하지는 않으셨는지 확인해보시면 좋을 것 같습니다.
또한, 질문자님께서 작성하신 코드를 공유해주시면 제가 더 구체적으로 도움을 드릴 수 있을 것 같습니다.

qptm님의 프로필 이미지
qptm
질문자

imageimage

안녕하세요. 제가 기존에 작성했던 코드 사진와 실행시 나오는 화면 사진을 첨부합니다. 제가 놓친 부분이 있을까요?

안녕하세요, 답변 도우미 Soobak 입니다.

 

asinf() 함수의 인수는 강의의 코드와 일치합니다.

asinf(1.0f) 의 호출은 π/2 라디안 값을 반환하여 약 1.570796에 해당하고, asinf(2.0f) 호출의 경우 인수의 범위가 함수의 정의 범위를 벗어나므로, NaN 값을 반환해야 합니다.

두 번째 경우에는 8096.000000 이라는 비정상적인 값이 컴파일러나 실행 환경에 따른 에러 처리 방식이 다를 수 있기 때문으로(예상치 못한 동작) 이해하려고 해도, 첫 번째 경우에서도 이상한 값이 나오는 것은 저도 이유를 유추하기 어렵네요. 🥲🥲

혹시, asinf() 함수가 정의되어 있는 헤더 파일, 즉 #include <math.h> 를 추가하셔서 결과를 확인해보시면 감사하겠습니다.

qptm님의 프로필 이미지
qptm

작성한 질문수

질문하기