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..를 얻으실 수 있습니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
102327 [질문] C언어 언더플로우 질문입니다. [3] Lee.e.y3696 17/05/09 3696
102326 [질문] 자취를 깔끔하게 하는 영상이 있을까요? 나혼자산다 처럼 [9] 2912 17/05/09 2912
102325 [질문] 수면 유도제 관련.. [12] 가렌5144 17/05/09 5144
102324 [질문]  [3] 삭제됨2916 17/05/09 2916
102323 [질문] nas 서버 구축 문의 [3] 도리도리쵸파3132 17/05/09 3132
102322 [질문] 공기청정기 렌탈 어떤가요? [9] YX2805 17/05/09 2805
102321 [질문] 스타크래프트 1은 리마스터링이 끝난 걸까요?? [3] 회색사과3223 17/05/09 3223
102320 [질문] 혹시 2차 공보물 못 받아보신 분 계신가요? [3] XIII2529 17/05/09 2529
102319 [질문] 경제학 관련해서 요약된 파일이나 사이트를 찾을수 있을까요? [5] 오빠나추워2225 17/05/09 2225
102318 [질문] 외주 웹 개발 비용과 지적 재산권 문제 [4] 일체유심조3397 17/05/09 3397
102317 [질문] 두드러기때문에 피검 받아보신분 계신가요? [4] 희원토끼2243 17/05/09 2243
102316 [질문] 오리 앤 더 블라인드 포스레스 질문 [1] 마롱3810 17/05/09 3810
102315 [질문] 달러로 바로 비트코인 매수 가능할까요? [5] 해병쫓는사도5172 17/05/09 5172
102314 [질문] 스타1 맥에서 잘 되나요? [7] 지바고2554 17/05/08 2554
102312 [질문] 드럼세탁기 세탁물 하나만 넣으면 안되는 건가요??? [4] 히페리온6277 17/05/08 6277
102311 [질문] 직구알못이 직구 총 비용에 대해서 문의드립니다. [4] 샨티2369 17/05/08 2369
102310 [질문] 차량용 블루투스 라디오 장착 질문입니다 [2] 해피바스2625 17/05/08 2625
102309 [질문] 스타1 리마스터 질문입니다. [2] 도도갓2537 17/05/08 2537
102308 [질문] PC 질문이에요~(조립) [1] 교자만두2317 17/05/08 2317
102306 [질문] 여행하고 남은 유로화를 달러 환전이 원화 환전보다 유리한가요? [3] 두산베어스4114 17/05/08 4114
102305 [질문] [LOL] 지금 용 시스템 좀 이상하지 않나요? [12] 누가 있을까3250 17/05/08 3250
102304 [질문] 코스피 상장회사는 분기별 실적공시가 필수는 아닌건가요? [2] 삭제됨2550 17/05/08 2550
102303 [질문] 교통사고가 났는데 조언 구합니다. (렉카관련) [1] Betty Blue 37˚22434 17/05/08 2434
목록 이전 다음
댓글

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