본문 바로가기
Ghost의 C Note(노트)/Ghost의 C언어 Float Type

Ghost는 언제나 실수(형) 연발?... ^^

by dark ghost 2012. 4. 18.
728x90
반응형

Float Type(실수 형)

: float type은 실수 형이라 하며, 실수 형과 정수 형 그렇게 숫자에서는 2가지가 있는데 정수 형은 일반 적인 숫자를 정수라 하고 예를 들면 10이나 12와 같은 숫자가 정수 형이고 float type이라는 실수 형은 소수를 실수 형이라 한다. 예를 들면 5.7이나 3.8과 같은 숫자를 실수 형이라고 한다. 그럼 실수를 나타내는 자료형에는 기본 적인 float형, double (또는 long float)형, long double형이 있으며크기와 범위는 아래 표와 같다.

 

  실수형의 데이타는 메모리 내에서 부호부분과 기수부 및 지수부의 세부분으로 나누어 저장 되며, float 형 숫자의 크기는  32 비트이다. 이 중에서 8 비트는 지수부와 부호를 나타내고, 나머지 24 비트는 기수부이다. 기수부는 10 진수로 7자리까지 나타낼수 있다.

 

   위 그림은 float type(실수형)의 소스다. 변수로는 "float fnumber = 45000.67;" 로 선언과 동시에 "45000.67"이라는 값으로 초기화를 시켰다. 처음으로 나오는 "printf("%f \n", fnumber);" 구문에 %f는 출력자리수 표시를 하지 않는 경우 실수의 출력 형식의 표기이며, "pirntf("%9.4f \n", fnumber);"라는 구문에는 %f 사이에 9.4라는 소수가 들어가 있는데 이 것은 출력자리수를 지정하는 경우로 9는 전체자리수이고 4는 소수부분의 자리수이다. 그리고 마지막 구문으로 "printf("%e \n", fnumber);"라는 구문인데 어라~~ 뭔가 이상하다. 그렇다 이때까지 구문에서는 %f가 있었는데 이 구문에서는 %e가 있는 것이다. 이 %e는 잘 쓰이지 않지만 %e는 과학 계산용 표기로 실수를 지수표시법으로 출력하기 위한 형식지정이다.

 

   위 그림은 flo.exe라는 실행 파일을 실행 시킨 화면이고 맨 처음 출력은 "printf("%f \n", fnumber);" 라는 구문에 의해 출력된 화면이며, 두번째는 "pirntf("%9.4f \n", fnumber);" 구문에 의해 출력된 화면인데 첫번째 출력된 값과 다른 것을 확인 할 수있다. 자리를 세어보면 총 9자리에 소수점 뒤에는 4자리가 있다. 어라라~~ 보니 첫번째는 45000.671875 인데 45000.6719다. 그렇다 값이 다른 것을 볼 수 있다. 두번째는 자리수만 4자리로 만든 것이 아니라 반올림을 한다는것을 알 수 있다. 그리고 마지막 세번째 별로 많이 않쓰이는 "printf("%e \n", fnumber);" 구문으로 출력되 화면인데 어딘지 모리게 첫번째, 두번째와 많이 달라 보인다. 그렇다.. %e가 과학계산용이라는 것을 잊으면 안된다. 그렇기 때문에 표기법이 많이 다른 것이다. 이렇게 하여 실수형의 출력법에 대해서도 조금은 알게 된 것 같다. ㅎㅎ 

 

728x90
반응형

댓글