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

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

四舍五入整數除法(而不是截斷)

四舍五入整數除法(而不是截斷)

墨色風雨 2019-11-28 10:46:19
我很想知道如何將數字四舍五入到最接近的整數。例如,如果我有:int a = 59 / 4;如果以浮點數計算,則為14.75;如何將結果存儲為“ a”中的15?
查看完整描述

3 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

int a = 59.0f / 4.0f + 0.5f;

這僅在分配給int時有效,因為它會丟棄'。'之后的任何內容。


編輯: 此解決方案將僅在最簡單的情況下工作。一個更強大的解決方案是:


unsigned int round_closest(unsigned int dividend, unsigned int divisor)

{

    return (dividend + (divisor / 2)) / divisor;

}


查看完整回答
反對 回復 2019-11-28
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

整數舍入的標準習慣用法是:


int a = (59 + (4 - 1)) / 4;

您將除數減一加到除數中。


查看完整回答
反對 回復 2019-11-28
?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

適用于任何除數和除數符號的代碼:


int divRoundClosest(const int n, const int d)

{

  return ((n < 0) ^ (d < 0)) ? ((n - d/2)/d) : ((n + d/2)/d);

}

如果您更喜歡宏:


#define DIV_ROUND_CLOSEST(n, d) ((((n) < 0) ^ ((d) < 0)) ? (((n) - (d)/2)/(d)) : (((n) + (d)/2)/(d)))

linux內核宏DIV_ROUND_CLOSEST對負除數不起作用!


查看完整回答
反對 回復 2019-11-28
  • 3 回答
  • 0 關注
  • 1151 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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