3 回答

TA貢獻1744條經驗 獲得超4個贊
這適用于正數,不確定負數。它只使用整數數學。
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;
}

TA貢獻1803條經驗 獲得超6個贊
沒有條件:
int roundUp(int numToRound, int multiple)
{
assert(multiple);
return ((numToRound + multiple - 1) / multiple) * multiple;
}
對于負數,這類似于從零開始舍入
編輯:適用于負數的版本
int roundUp(int numToRound, int multiple)
{
assert(multiple);
int isPositive = (int)(numToRound >= 0);
return ((numToRound + isPositive * (multiple - 1)) / multiple) * multiple;
}
如果multiple是2的冪
int roundUp(int numToRound, int multiple)
{
assert(multiple && ((multiple & (multiple - 1)) == 0));
return (numToRound + multiple - 1) & -multiple;
}

TA貢獻2039條經驗 獲得超8個贊
當因子始終為正時,這種方法有效:
int round_up(int num, int factor)
{
return num + factor - 1 - (num - 1) % factor;
}
編輯:返回round_up(0,100)=100。請參閱下面的保羅評論,以獲得返回的解決方案round_up(0,100)=0。
添加回答
舉報