Быстрый потолок целочисленного деления в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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