Быстрый потолок целочисленного деления в C/C++C++

Программы на C++. Форум разработчиков
Anonymous
Быстрый потолок целочисленного деления в C/C++

Сообщение Anonymous »

При целочисленных значениях x и y C и C++ возвращают как частное q = x/y минимальное значение эквивалента с плавающей запятой. Вместо этого меня интересует способ вернуть потолок. Например, ceil(10/5)=2 и ceil(11/5)=3.

Очевидный подход предполагает что-то вроде:

Код: Выделить всё

q = x / y;
if (q * y < x) ++q;
Это требует дополнительного сравнения и умножения; и другие методы, которые я видел (на самом деле использовал), включают приведение к типу float или double. Существует ли более прямой метод, который позволяет избежать дополнительного умножения (или второго деления) и ветвления, а также избежать приведения к числу с плавающей запятой?

Подробнее здесь: https://stackoverflow.com/questions/274 ... ion-in-c-c

Вернуться в «C++»