C++:舍入到数字的最近倍数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (40)

好的 - 我几乎不好意思在这里发布这个消息(如果有人投票结束,我会删除它),因为这似乎是一个基本问题。

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

提问于
用户回答回答于

这适用于正数,对负数不确定。它只使用整数数学。

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) 
{
    assert(multiple);
    return ((numToRound + multiple - 1) / multiple) * multiple;
}

扫码关注云+社区