好的 - 我几乎很尴尬在这里发布这个(如果有人投票关闭,我将删除),因为这似乎是一个基本问题。
这是在 C++ 中四舍五入到整数倍的正确方法吗?
我知道还有其他与此相关的问题,但我特别想知道在 C++ 中执行此操作的最佳方法是什么:
int roundUp(int numToRound, int multiple) { if(multiple == 0) { return numToRound; } int roundDown = ( (int) (numToRound) / multiple) * multiple; int roundUp = roundDown + multiple; int roundCalc = roundUp; return (roundCalc); }
更新:对不起,我可能没有明确意图。这里有些例子:
roundUp(7, 100) //return 100 roundUp(117, 100) //return 200 roundUp(477, 100) //return 500 roundUp(1077, 100) //return 1100 roundUp(52, 20) //return 60 roundUp(74, 30) //return 90
这适用于正数,不确定负数。它只使用整数数学。
int roundUp(int numToRound, int multiple) { if (multiple == 0) return numToRound; int remainder = numToRound % multiple; if (remainder == 0) return numToRound; return numToRound + multiple - remainder; }
编辑:这是一个适用于负数的版本,如果“向上”是指始终 >= 输入的结果。
int roundUp(int numToRound, int multiple) { if (multiple == 0) return numToRound; int remainder = abs(numToRound) % multiple; if (remainder == 0) return numToRound; if (numToRound < 0) return -(abs(numToRound) - remainder); else return numToRound + multiple - remainder; }