8.1 실수형 변수 선언하기
이제 실수 자료형을 사용해보겠습니다. 다음 내용을 소스 코드 편집창에 입력한 뒤 실행해보세요.
real_number.c
#include <stdio.h> int main() { float num1 = 0.1f; // 단정밀도 부동소수점 변수를 선언하고 값을 할당 // float는 숫자 뒤에 f를 붙임 double num2 = 3867.215820; // 배정밀도 부동소수점 변수를 선언하고 값을 할당 // double은 숫자 뒤에 아무것도 붙이지 않음 long double num3 = 9.327513l; // 배정밀도 부동소수점 변수를 선언하고 값을 할당 // long double은 숫자 뒤에 l을 붙임 // float와 double은 %f로 출력, long double은 %Lf로 출력 printf("%f %f %Lf\n", num1, num2, num3); // 0.100000 3867.215820 9.327513 return 0; }
실행 결과
0.100000 3867.215820 9.327513
소수점을 사용하여 실수를 저장해보았습니다(단, 소수점을 사용해서 표기해도 변수 안에 저장될 때는 IEEE 754 부동소수점 방식으로 저장됩니다). 여기서 float는 숫자 뒤에 f, F를 붙여주고, long double은 l, L을 붙여줍니다. double은 아무것도 붙이지 않습니다. 그리고 1.f, .1f처럼 소수점 앞 또는 뒤의 0은 생략할 수 있습니다.
float와 double을 printf로 출력할 때는 서식 지정자로 %f를 사용하고, long double을 출력할 때는 %Lf를 사용합니다.
참고
- %f: 부동소수점(floating point)의 약어로 f를 사용합니다.
- %Lf: long floating point에서 point를 제외한 첫 글자를 따서 Lf를 사용합니다.
이번에는 지수 표기법으로 실수를 저장해보겠습니다.
real_number_exponential_notation.c
#include <stdio.h> int main() { float num1 = 3.e5f; // 지수 표기법으로 300000을 표기 // float는 숫자 뒤에 f를 붙임 double num2 = -1.3827e-2; // 지수 표기법으로 -0.013827을 표기 // double은 숫자 뒤에 아무것도 붙이지 않음 long double num3 = 5.21e+9l; // 지수 표기법으로 5210000000을 표기 // long double은 숫자 뒤에 l을 붙임 // float와 double은 %f로 출력, long double은 %Lf로 출력 printf("%f %f %Lf\n", num1, num2, num3); // 300000.000000 -0.013827 5210000000.000000 // 지수 표기법으로 출력할 때는 float와 double은 %e로 출력, long double은 %Le로 출력 printf("%e %e %Le\n", num1, num2, num3); // 3.000000e+05 -1.382700e-02 5.210000e+09 return 0; }
실행 결과
300000.000000 -0.013827 5210000000.000000 3.000000e+05 -1.382700e-02 5.210000e+09
지수 표기법으로 표기할 때는 정수 부분은 한 자릿수만 적고, 소수자릿수 뒤에 e와 지수를 표기합니다. 마찬가지로 변수 크기에 맞게 마지막에 f 또는 l을 붙여줍니다. e 뒤에 지수가 양수이면 소수점 기준으로 자릿수가 왼쪽으로 이동하며 음수이면 오른쪽으로 이동합니다. 지수가 양수일 때는 +를 생략할 수 있습니다.
printf 함수는 실수를 지수 표기법으로 출력할 수도 있습니다. float와 double은 %e로, long double은 %Le로 출력하면 됩니다.
참고
- %e: 지수 표기법(exponential notation)의 약어로 e를 사용합니다.
- %Le: long exponential notation에서 notation을 제외한 첫 글자를 따서 Le를 사용합니다.