C ++:四舍五入到数字的最接近倍数

好的-我似乎很尴尬地在此处发布此信息(如果有人投票关闭,我会删除),因为这似乎是一个基本问题。

这是在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;

}

以上是 C ++:四舍五入到数字的最接近倍数 的全部内容, 来源链接: utcz.com/qa/411541.html

回到顶部