PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2017/05/09 11:05:35
Name Lee.e.y
Subject [질문] C언어 언더플로우 질문입니다.
정수형 언더플로우, 오버플로우는 이해가 잘 되는데요
실수형 언더플로우는 이해가 안됩니다.

#include
#include

int main()
{
        float num1 = FLT_MAX;
        num1 = num1 * 10.f;
        
        printf("%en", num1);
        
        return 0;
}
실수형의 최대값에 10.f 를 곱해주면 inf가 뜨면서 오버플로우가 발생하는데

#include
#include

int main()
{
        float num1 = FLT_MIN;
        num1 = num1 / 10.f;
        printf("%en", num1);
        
        return 0;
}
이런식으로 10.f로 나눠주면 언더플로우가 발생하면서 0이 나와야 하는거 아닌가요?
그런데 계산해보면 1.175495e-39로 나옵니다. 실수형 최소값은 1.175495e-38인데 이 값보다 분명히 더 작은데 0이 안나오네요.

제가 어떤 개념을 잘못 이해하고 있는걸까요?
C언어 3일차인데 막히네요 ㅠㅠ

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
17/05/09 11:09
수정 아이콘
글을 작성했는데 <stdio.h> 나 n 같은게 잘 표현이 안되네요. 양해바랍니다.
한화이글스
17/05/09 11:37
수정 아이콘
printf 계열에서 float를 출력하는 형식 지정자는 없습니다.
printf 내부에서는 %e, %f를 double 자료형으로 처리합니다.
실수 underflow를 확인하고 싶으시면,
double num1 = DLB_MIN / 2;
printf("%en", num1); 하시면 될거에요
본문의 코드를 통해 해당 값이 왜 나왔는지 이해하고 싶으시면, IEEE 754 관련 정보를 찾아 보시면 될겁니다.
17/05/09 12:09
수정 아이콘
한화이글스님이 printf로 float이 double로 넘어가서 생기는 문제때문에 생길 수 있는 문제에 대해 답을 주셨으니
코드에서 사용하신 float 형과 사용한 macro 에 대해 조금 더 설명하면
FLT_MIN 값은 minimum normalized positive floating-point number 값으로 float로 표현 가능한 범위의 값의 범위 중에서 nomalize 해서 표현할때 갖을 수 있는 최솟값입니다.
실수형의 normalized 표현등은 책이나 관련된 키워드로 검색해 보시면 될 것 같습니다.
실제 float값의 최소값은 FLT_MIN(1.175494351e-38F) 보다 더 작은 FLT_TRUE_MIN(1.401298464e-45F)값입니다.
이 값을 기준으로 10.f로 나누시면 기대하시는 값 0.000..를 얻으실 수 있습니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
102361 [질문] 컴알못이 데스크탑 질문드립니다. [2] 기다2062 17/05/09 2062
102360 [질문] 직장인분들은 목표가 뭔가요..? [11] 수지짜응3270 17/05/09 3270
102359 [질문] 새컴퓨터바꾸고 인터넷이안됩니다. [13] papaGom14054 17/05/09 14054
102358 [질문] 에반게리온에 대해서 질문합니다 [9] 벼둘기2290 17/05/09 2290
102356 [질문] 공중파 개표방송 인터넷 중계는 없을까요? [9] 보영님3874 17/05/09 3874
102355 [질문] 가성비 이어폰 추천 부탁드립니다. [8] 우리은하4735 17/05/09 4735
102354 [질문] BHC치킨 메뉴 추천해주세요. [12] 아스날13240 17/05/09 13240
102353 [질문] 선거관련 카톡 찌라시가 너무 심각한것 같은데요 [8] Cand3520 17/05/09 3520
102352 [질문] 조깅을 시작해보려 합니다. [10] 후라이도3149 17/05/09 3149
102351 [질문] 컴퓨터 그래픽카드 소음에 대해 질문이 있습니다. [4] 고양이맛다시다2691 17/05/09 2691
102350 [질문] [삭제 예정] 여성분들이 방송에 나오면 얼굴을 가리는 이유가 뭔가요? [14] 삭제됨4137 17/05/09 4137
102349 [질문] 진격의 거인 질문 [6] 열씨미3689 17/05/09 3689
102348 [질문] [강 스포] 에이리언 : 커버넌트 궁금한게 있습니다.. [9] 대장햄토리4230 17/05/09 4230
102347 [질문] 청주에 괜찮은 한정식집 있나요? [3] 토폴로지2575 17/05/09 2575
102346 [질문] 미들급 스시야 예의 질문 [7] spike663253 17/05/09 3253
102345 [질문] 미세먼지 마스크 추천좀요 [1] wannaRiot3405 17/05/09 3405
102344 [질문] 보고싶은 내한공연 가수 있으세요? [15] 따루라라랑2393 17/05/09 2393
102342 [질문] 컴퓨터 인터넷 연결 질문 입니다. 찌질의역사2104 17/05/09 2104
102341 [질문] 유튜버 장삐쭈 치킨값 인상 영상에 쓰인 원래 미국영화가 뭘까요? [2] plane3175 17/05/09 3175
102340 [질문] 갓겜이라는 위쳐3를 해보려고 하는데요.. [3] 공부맨2547 17/05/09 2547
102339 [질문] 일본 애니 질문이요 [4] realist2602 17/05/09 2602
102338 [질문] 부모님 크로아티아 패키지 여행 알아 보는 중 질문 드립니다~ [7] 바보탱이4047 17/05/09 4047
102337 [질문] [lol] 언제든지 롤 노말 같이 하실분? pure fiction2166 17/05/09 2166
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로