在项目使用中。 原本以为 直接 ceil(13/ 2) = 3 但是实际是错误的。 需要 是 ceil(5.0 / 2) double 才能向上取整。结果有大佬 直接使用两种办法 能解决问题。
由于传入的参数和返回的参数都是double,所以需要手动转化
#include <bits/stdc++.h>
using namespace std;
int main() {
printf("%d\n", (int)ceil(1.0*5/2)); // 输出3
return 0;
}
另外一种解决办法 使用公式
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 5, b = 2;
//C++中的整除默认下取整
printf("%d\n", (a+b-1) / b); // 输出3
return 0;
}
也能正确解决问题。 因此 问题关键原因是 int 除以int 他认为就是int 。
int a = 5, b = 2;
qDebug() << "shuxue debug double" << (a + b - 1) / b;
qDebug() << "shuxue debug double 8888" << ceil(5.0 / 2);