Если a
и b
положительны, вы можете полностью избежать операций с плавающей запятой и получить как точные результаты (без проблем с округлением FP), так и более быстрое время выполнения с помощью классического метода:
int res = (a + (b - 1)) / b;
Для отрицательного значения a
исправление не требуется - усечение, выполняемое целочисленным делением, уже имеет семантику, соответствующую вашей формуле ceil
; Итак, если вам нужен более общий случай:
int res = (a<0 ? a : (a + (b - 1))) / b;