亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C ++:向上舍入到最接近的數字的倍數

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 100roundUp(117, 100)//return 200roundUp(477, 100)//return 500roundUp(1077, 100)//return 1100roundUp(52, 20)//return 60roundUp(74, 30)//return 90
查看完整描述

3 回答

?
慕無忌1623718

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;

}


查看完整回答
反對 回復 2019-09-20
?
慕碼人8056858

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;

}


查看完整回答
反對 回復 2019-09-20
?
largeQ

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。


查看完整回答
反對 回復 2019-09-20
  • 3 回答
  • 0 關注
  • 1072 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號