c-四舍五入到最接近的整数



由于整数截断,我很难四舍五入到下一个整数。基本上,我希望x/n(两个整数(都是9,但我一直得到8。如何将两个整数除以,得到一个整数,它是实际十进制数的四舍五入版本?简单地使用ceil(25.0/3.0(对我来说是行不通的,因为在我的实际程序中,x和n是用户输入的整数值。

还有,为什么我下面试过的第三行不能跑?每当我尝试在ceil函数内打字时,我都会收到一条消息,上面写着";对ceil的未定义引用">

int x = 25;
int n = 3;
int numOfStrings = ceil(((double)x) / n);

浮点总是一个问题。

只需将是否有余数(模(的0("假"(或1("真"(相加就更简单了。

#include <stdio.h>
int main() {
int n = 3;
for( int x = 21; x < 30; x++ )
printf( "n:%d x:%d  x/n:%dn", n, x, x/n + !!(x%n) );
return 0;
}
n:3 x:21  x/n:7
n:3 x:22  x/n:8
n:3 x:23  x/n:8
n:3 x:24  x/n:8
n:3 x:25  x/n:9  // <=====
n:3 x:26  x/n:9
n:3 x:27  x/n:9
n:3 x:28  x/n:10
n:3 x:29  x/n:10

而且,你应该检查/防止被零除的可能性(左边是练习(

最新更新