我想將我的十進制值像2.2222一樣舍入到2.23。當我使用圓形,C#十進制取頂數2
decimal a = Math.Round((decimal)2.222, 2);
當我使用上限,這導致3
decimal c = Math.Ceiling((decimal)2.22);
我怎樣才能獲得2.2222到2.23?
我想將我的十進制值像2.2222一樣舍入到2.23。當我使用圓形,C#十進制取頂數2
decimal a = Math.Round((decimal)2.222, 2);
當我使用上限,這導致3
decimal c = Math.Ceiling((decimal)2.22);
我怎樣才能獲得2.2222到2.23?
我解決我的問題失敗..
string n = "2.2222";
string[] s = n.Split('.');
if (s[1].Count() >= 3)
{
List<char> z = s[1].ToString().Take(2).ToList();
int c=Convert.ToInt32(z[0].ToString() + z[1].ToString()) + 1;
// int b = Convert.ToInt32(s[1].ElementAt(0).ToString() + s[1].ElementAt(1).ToString()) + 1;
string output= s[0] + "." + c.ToString();
}
現在任何數量可以說,它會取2個十進制值並加1.感謝。
public static decimal CeilingAfterPoint(this decimal number, int digitsAfterPoint) {
return Math.Ceiling(number * (decimal)Math.Pow(10, digitsAfterPoint))
/(decimal)Math.Pow(10, digitsAfterPoint);
}
在紙上測試,應該爲你想要的工作正常:'小數c = CeilingAfterPoint(2.22222,2);' –
嗯,我認爲你需要使它對於擴展方法是靜態的,而且'Math.Pow'返回雙重 – V4Vendetta
是的,你現在正在修理。 –
嘗試像
decimal c = Math.Ceiling((decimal)2.222*100)/100;
,但如果你的價值是2.22
2.2222如何被舍入爲2.23?它應該舍入到'2.22' – Habib
是的。我想要2.2222結果到2.23,我該怎麼辦? – Thura
@Thura:你必須發明一個新的數學...... –