몽상실현개발주의

[따배씨] 3.12 부동소수점형의 한계 본문

Language/C

[따배씨] 3.12 부동소수점형의 한계

migrationArc 2021. 5. 11. 18:07

[따배씨] 3.12 부동소수점형의 한계

따배씨 - 따라하며 배우는 C언어

3강 데이터와 C 언어

3.12 부동소수점형의 한계

#include <stdio.h>
#include <float.h>
#include <math.h>

int main()
{
    // round-off errors (ex1) - 너무 큰숫자와 상대적으로 작은 숫자의 합의 계산이 되지 않음
    float a, b;
    a = 1.0E20f + 1.0f;
    b = a - 1.0E20f;
    printf("%f\n", b);  // 0.000000
    
    // round-off errors (ex2) - 2진수를 사용하는 부동 소수점 표현법에서는 0.01 을 표기 하지 못함
    float c = 0.0f;
    for (int i = 0 ; i < 100; i++){
        c = c + 0.01f;
    }
    printf("%f\n", c);  // 0.999999
    
    
    // overflow
    float max = 3.042823466e+38f;
    printf("%f\n", max);
    max = max * 100.0f;
    printf("%f\n", max);    // inf 출력, infinite: 표현 할 수 없는 큰 숫자
    
    
    // underflow
    float min = 1.401298464e-45f;
    printf("%e\n", min);
    min = min / 2.0f;
    printf("%e\n", min);    // 0.000000e+00 출력, subnormal: 부동 소숫점 형의 정밀도로 표현할수 없는 작은 숫자
    
    float f = 104.0f;
    f = f/0.0f;
    printf("%f\n", f); // inf 출력
    
    f = asinf(2.0f);    // arc sin
    printf("%f\n", f);  // nan 출력, Not A Number: 수학적으로 존재하지 않는 값
    
    return 0;
}

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

Comments