cCcode

C Language [핵심정리] - 3 본문

C Language Basic

C Language [핵심정리] - 3

cCcode 2021. 5. 7. 19:20

1. 실수 자료형 사용하기

실수 자료형

정말 큰 숫자정말 작은 숫자를 표기할 때는 지수 표기법(exponential notation)을 사용합니다.

1) 실수e+지수 : 실수 × 10의 거듭제곱입니다.

ex) 2e+3이라면 2 × 10³[= 1000] = 2000 입니다.

2) 실수e-지수 : 실수 × (1 ÷ 10의 거듭 제곱)입니다.

ex) 2e-2라면 2 × (1 ÷ 10)²[= 1 ÷ 100] = 0.02 입니다.

그리고 컴퓨터는 값을 0과 1(2진수)로 표현합니다. 그래서 실수도 0과 1(2진수)로 표현해야 하는데 이렇게 실수를 0과 1(2진수)로 표현하는 방식을 부동 소수점 방식이라고 합니다.  

부동 소수점 방식

여기서 중요한 점은 기수2로 고정되어 있어 따로 저장되어 있지 않다는 점[컴퓨터는 저장할 때 2진수저장하기 때문에]과 유효 자릿수는 실수를 해당 자릿수만큼 표현할 수 있다는 점[ex)만약 유효 자릿수가 2일 때 1.234는 반올림하여 1.2로 표현합니다.]그리고 배정밀도 부동 소수점단정밀도 부동 소수점보다 더 긴 자릿수자세히 표현할 수 있다는 점입니다. 혹시나 해서 말씀드리지만 여기서 말하는 자릿수정수의 자릿수도 포함하고 있습니다.

 

아,, 그리고 단정밀도 부동 소수점float배정밀도 부동 소수점double저장방식은 다음과 같아요.

float과 double의 저장방식

이 부분은 "아~ 이런게 있구나" 라고만 생각하고 넘어가시면 됩니다.

 

☆ %f : 단정밀도 부동 소수점(floating point)의 약어로 f 를 사용합니다.

★ %lf : 배정밀도 부동 소수점(long floating point)에서 point 를 제외한 첫 글자를 가져와서 lf 를 사용합니다.

☆ %e : 지수 표기법(exponential notation)의 약어로 e 를 사용합니다.

★ %le : (long exponential notation)에서 notation을 제외한 첫 글자를 가져와서 le 를 사용합니다.

 

실수 자료형의 크기와 지수 표기법 출력

 

결과

보시는 것처럼 실수를 출력하는 서식지정자들(%f, %lf, %e, %le 등)은 모두 소수점 6번째 자리까지 출력합니다.

그런데 만약 소수점 n번째자리까지만 출력하고 싶다면 %.nf(lf)를 통해 소수점 n번째 자릿수까지 출력할 수 있습니다. 이 경우에는 %g 서식지정자(소수점 자리에 값이 없다면 출력하지 않는다)를 대신 사용할 수 있는데, 이외에도 %2d%2f 와 같이 서식지정자 앞에 숫자를 사용해 출력 폭지정할 수도 있습니다.

 

그리고 float형 변수에는 flong double형 변수에서는 l대입 연산자 뒤 상수에 사용해서 표기합니다. (double은 생략합니다.) 이제 실수 자료형들의 최소,최대값을 구해봅시다. 그전에 정수 자료형들의 최소, 최대값들을 정의했던 <limits.h>파일처럼 실수 자료형들의 최소,최대값을 정의하고 있는 <float.h>파일도 있습니다.

(1) FLT_MIN, FLT_MAX - (float의 최소, 최대) (2) DBL_MIN, DBL_MAX - (double의 최소, 최대)

(3) LDBL_MIN, LDBL_MAX - (long double의 최소, 최대)

실수 자료형들의 최소,최대값
결과

정수와 달리 실수에서 언더 플로우발생하면 0 또는 쓰레기 값으로 처리하고 오버 플로우가 발생했을 때는 inf가 출력되요. 우리는 평소에 1과 1.0을 같은 의미로 생각하잖아요. 하지만 컴퓨터는 1과 1.0을 정수와 실수 즉, 다른 수로 구분해요.

'C Language Basic' 카테고리의 다른 글

C Language [핵심정리] - 6  (0) 2021.05.10
C Language [핵심정리] - 5  (0) 2021.05.09
C Language [핵심정리] - 4  (0) 2021.05.08
C Language [핵심정리] - 2  (0) 2021.05.06
C Language [핵심정리] - 1  (1) 2021.05.05
Comments