我遇到了一段代码问题,涉及将浮点数舍入到最近的上部x。我想要做的就是拿走我拥有的任何数字并将其四舍五入到下一个最高的x。我的代码似乎在80%的时间内工作,但最近发现了一些情况,它没有返回我期望的数字。例如,如果我希望它四舍五入到下一个最高500,则下面的代码显示了我将拥有的内容。
CGFloat number = 3780;
roundedNumber = 500 *ceilf(number/500 +.5);
在这里,我希望答案返回4000.相反,它会返回4,500。
上面有关于数学的东西,我缺少/不理解?为什么只是在某种情况下,这似乎"在圆形"我的号码?有没有一种更简单的方法来获得我之后的东西?
答案 0 :(得分:0)
基本上:
3780 /500 + 0.5 -> 7.56 + 0.5 -> 8.06
ceil(8.06) -> 9
9 * 500 -> 4500