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