c++ - C++ 中的除法舍入
问题描述
int
在不使用 C++ 中对两个值执行除法时如何进行舍入std::ceil
?
通常,我最终会执行以下操作:
double res = ceil(a / (double) b);
有什么方法可以在不使用的情况下复制结果std::ceil
?
解决方案
如果a
和b
都是正数,您可以完全避免浮点数,并通过经典方法获得准确的结果(FP 舍入没有问题)和更快的执行时间:
int res = (a + (b - 1)) / b;
对于负数a
,您不需要任何更正 - 整数除法执行的截断已经具有与您的ceil
公式匹配的语义;所以,如果你想要一个更一般的情况:
int res = (a<0 ? a : (a + (b - 1))) / b;
推荐阅读
- qt - 为什么锚点更改后项目会消失?
- sql - 如何优先从表中获取列
- asp.net-core - 使用 HttpClient 调用 WeatherAPI
- cocoapods - 将MongoDB添加到ios项目
- java - 当属性名称不同时,java将map转换为pojo
- java - 尽管抛出异常,但事务没有回滚
- ruby-on-rails - 如何在 Ruby on Rails 中将额外文本推送到“选择”标签
- android - 使用google api android在地图上添加搜索框
- python - 如何根据条件从另一个数据框中替换一个数据框中的列值?
- html - 如何重定向单一类型的网址