我试图将一个数字除以另一个,然后立即将ceil()转换为结果。这些通常是变量,但为简单起见,让我们坚持使用常量。

如果尝试以下任何一种方法,则当我想得到4时我得到3。

double num = ceil(25/8); // 3
float num = ceil(25/8); // 3
int num = ceil(25/8); // 3

我已经读过这里的一些线程(尝试过this thread的nextafter()建议)以及其他站点,但我不知道发生了什么。我检查了一下,变量是我期望的数字,实际上我已经使用常量尝试了上述操作,但仍然得到了意外的结果。

先谢谢您的帮助。我敢肯定,这很简单,我很想念,但现在我很茫然。

最佳答案

这是因为您正在执行整数运算。在调用ceil之前,该值为3,因为25和8都是整数。首先使用整数算术计算25/8,得出3。

尝试:

double value = ceil(25.0/8);

这将确保编译器将常数25.0视为浮点数。

您还可以使用显式强制转换来实现相同的结果:
double value = ceil(((double)25)/8);

关于objective-c - ceil()无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12922779/

10-13 04:54