При заданных целых значениях x
и y
, C и С++ возвращают как фактор q = x/y
пол эквивалента с плавающей точкой. Меня интересует метод возврата потолка. Например, ceil(10/5)=2
и ceil(11/5)=3
.
Очевидный подход включает в себя что-то вроде:
q = x / y;
if (q * y < x) ++q;
Для этого требуется дополнительное сравнение и умножение; и другие методы, которые я видел (на самом деле), включают кастинг как float
или double
. Есть ли более прямой метод, который позволяет избежать дополнительного умножения (или второго деления) и ветки, а также избегает кастинга как числа с плавающей запятой?