簡體   English   中英

如果它有小數位,則將值增加1?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM