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