본문 바로가기

# IT, Computer Science/C , C++

c언어에서의 올림(ceil), 내림(floor), 반올림

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

다른 분야에선 쫌 다르게 쓰일지 모르겠으나

c언어에 국한하여 올림, 내림, 반올림 방법을 보면



올림, 내림은
math.h 에 포함된 ceil 함수와 floor 함수를 사용하면된다.

수직선을 기준으로 보면,

ceil 함수는 우측으로 가장 가까운 정수를 찾아서 리턴한다.

-3   -2   -1   0   1   2   3
<-------------------->
          ↑
        -1.2
일때 ceil 함수는 -1을 리턴한다.

floor 함수는 좌측으로 가장 가까움 정수를 찾아서 리턴한다.

-3   -2   -1   0   1   2   3
<-------------------->
          ↑
        -1.2
일때 floor 함수는 -2을 리턴한다.





반올림은,
실수형 숫자에 0.5를 더하여,
정수형 숫자로 그냥 변환해주는 컨셉으로 만들어주면된다.

예를들면
1.2를 소수 첫째자리에서 반올림 하고 싶으면 0.5를 더하면 1.7이되는데, 이것을 정수형 숫자로 그냥 자르면
1이 된다.
반면에 1.6을 소수 첫째자리에서 반올림 할때는 0.5를 더하면 2.1이 되는데, 이것을 정수형 숫자 그냥 자르면
2가 된다.

이와 비슷한 컨셉으로 소수 둘째자리, 셋째자리, 등등... 에서 반올림하는것도 충분히 가능하다.

참고로 소수 셋째자리에서 반올림하는 것을 코드로 보면,

int main(void)

{

        // Local Decalration

        double fltnum1;

        int intnum1;

        double fltnum2;

 

        // Statement

 

        printf("Enter the floating-point number that you want : ");

        scanf("%lf", &fltnum1);

 

        intnum1 = (int)(fltnum1 * 100 + 0.5);

        fltnum2 = (double)intnum1 / 100;

 

        printf("\nRounded to two decimal places : %8.6lf", fltnum2);

 

        return 0;

} // main


와 같은 코드가 된다. 100을 곱해준뒤 0.5를 더하고 다시 100으로 나눠주는 과정이 보인다.