c++ - C++ 中的除法汇总

标签 c++ c++11 division integer-division ceil

在不使用 std::ceil 的情况下,如何在 C++ 中对两个 int 值进行除法?

通常我最终会做如下事情:

double res = ceil(a / (double) b);

有什么方法可以在不使用 std::ceil 的情况下复制结果?

最佳答案

如果 ab 都是正数,您可以完全避免 float 并获得精确的结果(FP 舍入没有问题)和更快的执行时间方法:

int res = (a + (b - 1)) / b;

对于负的 a 您不需要任何修正 - 整数除法执行的截断已经具有与您的 ceil 公式匹配的语义;所以,如果你想要一个更一般的情况:

int res = (a<0 ? a : (a + (b - 1))) / b;

关于c++ - C++ 中的除法汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62032583/

相关文章:

c++ - 从 this->class 构造函数调用类构造函数(不同的参数)?

c++ - 文件无法打开,即使 stat() 可以找到它

c++ - 如何在不相关类型的共享指针中共享相同的引用计数器?

c++ - const char * 到 std::basic_iostream

php - 变量的乘法和除法

c++ - 如何打印 void 指针指向的变量

c++ - 为什么 -1 >> 1 是 -1 ?并且 1 >> 1 是 0!

c++ - 显式模板实例化

c - C 中整数的商

Java int除法让我困惑