ceil()函数在写“”时应该给2.000000而不是1.000000
int main() {
printf( "%f", ceil(5/3) );
return 0;
}floor()函数按预期给出1.000000。我不明白为什么赛尔要给1.000000。
int main() {
printf("%d", ceil(5.0/3));
return 0;
}发布于 2020-01-04 06:41:06
ceil的签名是double ceil(double x);。
printf( "%f", ceil((double)5/3) );应该如您所期望的那样工作。5/3是整数除法。作为整数除法的结果,ceil函数接收1 (小数后的数字被丢弃),并且在那里做的事情很少。
将/运算符的至少一个操作数转换为double将导致浮点除法,小数点后的数字将被保留。
您需要将一个小数传递给ceil,这样它才能做您想做的事情。
在下面的注释中,Chux提供了一种替代的方法。
https://stackoverflow.com/questions/59588517
复制相似问题