1. 什么是向上取整(Ceiling)
向上取整(Ceiling)是数学中的一个基本概念,表示取大于或等于某个数的最小整数。
数学符号是:$\lceil x \rceil$
例子:
- $\lceil 2.3 \rceil = 3$
- $\lceil 2.0 \rceil = 2$
- $\lceil -2.3 \rceil = -2$ (注意不是 -3,因为 -2 比 -2.3 大)
- $\lceil -2.0 \rceil = -2$
对比:向下取整(floor):取小于或等于 x 的最大整数四舍五入(round):根据小数部分决定向上或向下取整
2. C++ 中的除法默认是'向零截断'
在 C++ 中,两个整数相除 / 会执行向零截断(truncate towards zero):
- 正数:等价于向下取整
- 负数:等价于向上取整
#include <iostream>
using namespace std;
int main() {
cout << 7 / 3 << endl; // 2(7/3=2.333,向零截断)
cout << -7 / 3 << endl; // -2(不是 -3)
}
这意味着:
- 直接用
/不能直接得到数学上的向上取整结果 - 需要额外处理才能实现真正的向上取整
3. 实现向上取整的三种主流方法
3.1 使用 <cmath> 中的 std::ceil
C++ 标准库提供了 ceil 函数,定义在 <cmath> 中:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double x = 7.0 / ;
cout << (x) << endl;
y = / ;
cout << (y) << endl;
}


