[英]Increasing the value by 1 if it has decimal place?
我的情況是,如果
47/15= 3.13333
我想將它轉換為4,如果結果有十進制我想將結果增加1,現在我正在這樣做
float res = ((float)(62-15) / 15);
if (res.ToString().Contains("."))
{
string digit=res.ToString().Substring(0, res.ToString().IndexOf('.'));
int incrementDigit=Convert.ToInt16(k) + 1;
}
我想知道c#中是否有任何快捷方式或內置函數,以便我可以快速完成此操作而無需實現字符串函數。
非常感謝。
你的意思是你想要執行整數除法,但總是四舍五入? 我懷疑你想要:
public static int DivideByFifteenRoundingUp(int value) {
return (value + 14) / 15;
}
這完全避免了使用浮點運算 - 它只允許任何不是15的精確倍數的值被舍入,這是由於整數運算截斷為零的方式。
請注意,這並不為負輸入工作-例如,如果你在此-15通過將返回0,你可以如此修正:
public static int DivideByFifteenRoundingUp(int value) {
return value < 0 ? value / 15 : (value + 14) / 15;
}
使用Math.Ceiling
引用MSDN :
返回大於或等於指定十進制數的最小整數值。
您正在尋找Math.Ceiling()
。
將您擁有的值轉換為Decimal或Double,該方法的結果就是您所需要的。 喜歡:
double number = ((double)(62-15) / (double)15);
double result = Math.Ceiling(number);
請注意我將15轉換為double的事實,因此我避免整數除法。 這很可能不是你想要的。
另一種做你要求的方法是在每個數字上加0.5,然后將其放置(截斷小數位)。 我擔心我現在無法訪問C#編譯器以確認確切的函數調用!
注意:但正如其他人已經證實的那樣,我認為Math.Ceiling功能可以最好地與其他人溝通你想要的東西。
就像是:
float res = ((float)(62-15) / 15);
int incrementDigit = (int)Math.Ceiling(res);
要么
int incrementDigit = (int)(res + 0.5f);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.