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

열공!님의 프로필 이미지
열공!

작성한 질문수

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

3.11 부동소수점형

1.0625e0과 0.0625e0의 차이

작성

·

233

1

안녕하세요.

 

강의의 23째 줄 코드를 제가 0.0625e0;로 바꾼 후 build를 해보니까 프로그램 마지막 출력에서 각각 아래와 같은 값이 나왔습니다.

0x1.0000000000000p-4

0X1.0000000000000P-4

저는 0.0625가 1/16이니 출력이 0x1.000...0p-1이나

0x0.1000...0p+0일 줄 알았는데 p-4가 나와서

왜 이러한 값이 나오는지 질문드립니다.

답변 1

2

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

 

printf() 함수의 형식 지정자 %a 또는 %A 는 부동 소수점 숫자를 16진법 표기법으로 출력하기 위한 것입니다.
이 형식에서, 16진수 표현 다음에는 p 또는 P 가 오며, 이어서 지수가 2진수로 표시됩니다.

 

이 때, 0x1.0000000000000p-4 라는 출력은 16진수에서 1.02-4 승을 곱한 값을 의미합니다.
따라서, 1.0 * 1/16 즉, 0.0625 를 정확히 나타냅니다.

열공!님의 프로필 이미지
열공!

작성한 질문수

질문하기