C/C++에서 정수 나눗셈 결과를 빠르게 올림하는 방법


C/C++에서는 int를 나눈 결과를 항상 내림하는 걸로 알고 있습니다. math.hceil()이 있는 건 알지만 따로 헤더를 include하지 않고 바로바로 올림하는 방법을 알고싶습니다.

제 코드는 따로 비교하고 곱하는 일까지해서 비효율적인데 더 나은 코드를 알고 싶습니다.

소스코드

q = x / y;
if (q * y < x) ++q;

조회수 302


1 답변


좋아요
0
싫어요
채택취소하기

x, y모두 양수인 경우라고 가정한 코드입니다.

1. 빠른 올림

q = (x + y - 1) / y;

2. 1이 오버플로우가 나는 경우

q = 1 + ((x - 1) / y);
  • 2016년 02월 04일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close