4

例如int value1 = 11,在除以 2 ( value1 / 2) 后,我有一个值,它返回 5。float 中的实际值是 5.5,在这种情况下或其他情况下,谁能帮我返回 6..?一般来说,我想将值四舍五入到下一个更高的值..

4

4 回答 4

24

如果您总是想四舍五入,并且您有一个float值,请使用ceilf(来自<math.h>库)。

如果您想将整数除以n,请执行(value + n-1) / n。因此,除以 2 时,变为(value + 1) / 2

于 2013-01-31T18:05:05.437 回答
10

有函数 ceil(<#(double)#>) 或 ceilf(<#(float)#>) 将值四舍五入到更高

此外,您应该明确地将计算转换为 float/double 以获得值 5.5,该值可以四舍五入到更高。

ceilf(value1 / 2.0f);

或者

ceilf(1.0f * value1 / 2);

如果你不这样做 - 它可能会在下一个序列中呈现:

ceilf(11/2) = 
1) 11/2 = result int = 5
2) ceilf(5)
3) 5 ->int implicitly cast to float -> 5.0f
4) result 5.0f
于 2013-01-31T18:05:15.367 回答
1

好吧,通常,您只需添加 1:

int half = (value1+1)/2

所以,你总是会四舍五入。应该是整数的最简单方法。

于 2013-01-31T18:03:47.980 回答
1
ceil(value1 / 2)

向上舍入到最接近的 int

于 2013-01-31T18:05:11.693 回答