上下取整问题
代码实现
上取整
double a = 6.4;
double b = 1.3;
int fxxk(double a, double b) {
return (a / b - (int)(a / b) > 0.0) ? (int)(a / b) + 1 : (int)(a / b);
}
// 求 a / b 上取整
int res = fxxk(a, b);
下取整
int res = a / b; // 直接除即可
上取整转化为下取整
因为在一般的程序语言中, 整数相除, 结果是一个 下取整 后的整数.
如果使用上取整函数ceil()
, 但是在C++中, 它的返回值是一个浮点数
, 涉及到浮点计算, 对性能有损耗.
所以有以下公式
此处我们需要讨论一下 是否可以被整除
-
如果 可以 被整除
-
那么有 一定 不能 被整除
- 则
-
-
如果 不可以 被整除
-
那么有
- 则
-
证毕!
附加有相关应用的题目: (实际使用的时候直接采用代数法即可, 具体可以见下面, 有写)