C언어/언제나 C언어

실수 형식 double, float 표현과 출력 [언제나 C언어]

언제나휴일 2020. 6. 4. 09:44
반응형

 

실수 형식 메모리 크기 확인

#include <stdio.h> //표준 입출력 헤더

int main(void)
{       
    printf("sizeof(double):%d bytes, sizeof(float):%d bytes\n", sizeof(double),sizeof(float));
    return 0;
}

 실수 리터럴 표현 크기 확인

#include <stdio.h> //표준 입출력 헤더

int main(void)
{       
    printf("sizeof(0.1):%d bytes\n", sizeof(0.1));
    printf("sizeof(0.1f):%d bytes\n", sizeof(0.1f));
    return 0;
}

다양한 실수 표현

#include <stdio.h> //표준 입출력 헤더
int main(void)
{       
    double df = 3.4; //실수 표현 디폴트 형식은 double
    float f = 123.45f;// float 형식 실수는 f를 뒤에 붙임
    float f2 = 123.45f;//부동 소수점 표현
    float f3 = 1.2345e+2f;//지수 표현
    float f4 = 7.f;  //소숫점 이하 자리가 없을 때 점(.)만 찍어도 실수 표현으로 취급
    float f5 = .05f; //정수 부분이 0일 때 0을 생략할 수 있다.
    return 0;
}

실수 출력

#include <stdio.h> //표준 입출력 헤더

int main(void)
{       
    double df = 3.4;
    float f = 3.4f;
    printf("df:%f\n",df);
    printf(" f:%f\n",f);
    return 0;
}

소숫점 이하 자리 출력

#include <stdio.h> //표준 입출력 헤더

int main(void)
{       
    printf("%.2f\n", 12.3456);
    return 0;
}

지수 표기로 출력

#include <stdio.h> //표준 입출력 헤더

int main(void)
{       
    printf("%e\n", 12.3456);
    return 0;
}

가장 간단하게 출력

#include <stdio.h> //표준 입출력 헤더

int main(void)
{       
    printf("%g\n", 13.4);//13.4
    printf("%g\n", 0.00000012);//1.2e-07
    return 0;
}

실수 사용에서 주의할 점 - 오차

#include <stdio.h> //표준 입출력 헤더

int main(void)
{     
    float f = 0.0f;
    f += 0.1f;
    printf("%.20f\n", f);
    f += 0.1f;
    printf("%.20f\n", f);
    f += 0.1f;
    printf("%.20f\n", f);

    double df = 0.0;
    df += 0.1;
    printf("%.20f\n", df);
    df += 0.1;
    printf("%.20f\n", df);
    df += 0.1;
    printf("%.20f\n", df);
    return 0;
}

 

 

반응형