C 자료형 실수 - sonkoni/Koni-Wiki GitHub Wiki

실수 자료형

       type    printf     literal   description
--------------------------------------------------
      float    %f, %e     f, F     4바이트(32비트, 소수요효 6)
     double    %f, %e              8바이트(64비트, 소수요효 15)
long double   %Lf, %Le    l, L     16바이트(128비트, 소수요효 18)


== 참고: flat 표현 - 4바이트(32비트) ==
  ┌ sign. 1비트. 부호
  ▣ ▢ ▢ ▢ ▢ ▢ ▢ ▢ ▢ . ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩ ▩
 31              23  22                                           0
    └─────┬───────┘   └──────────────────────┬────────────────────┘
    지수. 8비트. 정수부분                가수. 23비트. 소수부분

long double 은 DataModel 에 따라 달라진다.

// 십진표현법
float num1 = 0.1f;              // 뒤에 f 붙인다.
double num2 = 0.1;              // 아무것도 안 붙임
long double num3 = 1234.5678l;  // 위에 l 붙인다.
printf("-> %f, %f, %Lf \n", num1, num2, num3); // long double 은 L 을 더 붙인다.

// 지수표현법
float num4 = 3.e5f;             // 지수 표기법으로 300000을 표기
double num5 = -1.3827e-2;       // 지수 표기법으로 -0.013827을 표기
long double num6 = 5.21e+9l;    // 지수 표기법으로 5210000000을 표기
printf("=> %f %f %Lf \n", num1, num2, num3);
printf("=> %e %e %Le \n", num1, num2, num3);


// -> 0.100000, 0.100000, 1234.567800
// => 0.100000 0.100000 1234.567800
// => 1.000000e-01 1.000000e-01 1.234568e+03

자료형의 크기

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("float: %zu, double: %zu, long double: %zu",
        sizeof(float),
        sizeof(double),
        sizeof(long double)
    );
    return 0;
}

// float: 4, double: 8, long double: 16
⚠️ **GitHub.com Fallback** ⚠️