在不使用 std::ceil
的情况下,如何在 C++ 中对两个 int
值进行除法?
通常我最终会做如下事情:
double res = ceil(a / (double) b);
有什么方法可以在不使用 std::ceil
的情况下复制结果?
最佳答案
如果 a
和 b
都是正数,您可以完全避免 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/