1. ホーム
  2. c++

[解決済み] 数値の倍数への切り上げ

2022-04-18 13:32:29

質問

OK - 基本的な質問のようなので、ここに投稿するのはほとんど恥ずかしいです(そして、誰かが閉じることに投票したら、私は削除します)。

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;
}

編集:負の数で動作するバージョンです。もし、"up" が常に >= 入力である結果を意味するならば。

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;
}