본문으로 바로가기

floor / ceil / round

  • floor: 소수점 첫 번째 자리에서 내림
  • ceil: 소수점 첫 번째 자리에서 올림
  • round: 소수점 첫 번재 자리에서 반올림
#include <cstdio>
#include <cmath>

int main() {
  float n1 = -0.75;
  float n2 = -0.25;
  float n3 = 0.25;
  float n4 = 0.75;

  printf("%.2f, %.0f, %.0f, %.0f\n", n1, floor(n1), ceil(n1), round(n1));// -0.75, -1, -0, -1
  printf("%.2f, %.0f, %.0f, %.0f\n", n2, floor(n2), ceil(n2), round(n2));// -0.25, -1, -0, -0
  printf("%.2f, %.0f, %.0f, %.0f\n", n3, floor(n3), ceil(n3), round(n3));// 0.25, 0, 1, 0
  printf("%.2f, %.0f, %.0f, %.0f\n", n4, floor(n4), ceil(n4), round(n4));// 0.75, 0, 1, 1

  return 0;
}

Custom Round Function

실수를 원하는 소수점 자리에서 반올림하는 함수는 다음과 같이 정의할 수 있다.

#include <cstdio>
#include <cmath>

double round(double n, int p);// 실수 n을 소수점 p 자리에서 반올림하는 함수

int main() {
  double n = 12.3456789;

  printf("%lf\n", round(n, 1));// 12.000000
  printf("%lf\n", round(n, 2));// 12.300000
  printf("%lf\n", round(n, 3));// 12.350000
  printf("%lf\n", round(n, 4));// 12.346000
  printf("%lf\n", round(n, 5));// 12.345700
  printf("%lf\n", round(n, 6));// 12.345680
  printf("%lf\n", round(n, 7));// 12.345679

  return 0;
}

double round(double n, int p) {
  n *= pow(10, p-1);
  n += 0.5;
  n = (int)n;
  n /= pow(10, p-1);
  return n;
}

댓글을 달아 주세요