cod*_*jam 1 c++ division integer-division ceil c++11
int在 C++ 中对两个值执行除法而不使用时,如何进行四舍五入std::ceil?
通常,我最终会执行以下操作:
double res = ceil(a / (double) b);
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在不使用的情况下复制结果std::ceil?
如果a和b都是正数,则可以完全避免浮点,并通过经典方法获得精确结果(FP 舍入没有问题)和更快的执行时间:
int res = (a + (b - 1)) / b;
Run Code Online (Sandbox Code Playgroud)
对于负数,a您不需要任何更正 - 整数除法执行的截断已经具有与您的ceil公式匹配的语义;所以,如果你想要一个更一般的情况:
int res = (a<0 ? a : (a + (b - 1))) / b;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |