我需要找到兩個整數的除法,並將其圓下一上部整數數學舍入到總是上部整數
e.g X = 7/Y = 5 = 2;這裏x和y總是比0
更大這是我當前的代碼
int roundValue = x % y > 0? x/y + 1: x/y;
有沒有什麼更好的方法來做到這一點?
我需要找到兩個整數的除法,並將其圓下一上部整數數學舍入到總是上部整數
e.g X = 7/Y = 5 = 2;這裏x和y總是比0
更大這是我當前的代碼
int roundValue = x % y > 0? x/y + 1: x/y;
有沒有什麼更好的方法來做到這一點?
您可能使用Math.Ceiling
...但這將需要轉換爲/從double
值。
另一種替代方法是使用Math.DivRem
同時執行兩個部分。
public static int DivideRoundingUp(int x, int y)
{
// TODO: Define behaviour for negative numbers
int remainder;
int quotient = Math.DivRem(x, y, out remainder);
return remainder == 0 ? quotient : quotient + 1;
}
使用ceil()
函數。 它給出了較高的值。
嘗試(int)Math.Ceiling(((double)x)/y)
不知道什麼是更好的方式或如何定義一個更好的方式(如果在性能方面,你必須運行測試,看看哪個會更快),但這裏是我的解決方案:
int roundValue = x/y + Convert.ToInt32(x%y>0);
ps
仍然必須以某種方式處理neg。號碼......海事組織這是最簡單的。
所有解決方案看起來太難。對於上限值x/y,請使用這一個
(x + y - 1)/y
'添加另一個組,但如果您已經有一個完整的組',減去一個 - 好主意。只要整數是正數,似乎沒有問題。感謝分享! – jacoblambert
重複? http://stackoverflow.com/questions/921180/how-can-i-ensure-that-a-division-of-integers-is-always-rounded-up/926806 – chrisaut