[英]Format decimal number with custom amount of digits after comma
我有此自定義擴展名,該格式應格式化逗號后帶有自定義位數的十進制數字。
public static decimal FormatDecimal(this decimal value, int decimalSeparator = 2)
{
decimal returnValue = Math.Round(value, decimalSeparator, MidpointRounding.AwayFromZero);
return returnValue;
}
問題是,它不能按預期工作。
如果我這樣做:
decimal number = 12345;
接着:
decimal formatedNumber = number.FormatDecimal(2);
結果應該是:
12345.00
相反,結果是:
12345
我做錯了什么?
我認為正確的方法是使用"0"
自定義格式說明符 ;
如果存在一個數字,則將零替換為相應的數字; 否則,結果字符串中將出現零。
例如;
decimal d = 12345;
Console.WriteLine(d.ToString("#.00")); // 12345.00
這是擴展功能的工作
public static string FormatDecimal(this decimal value, int decimalSeparator = 2)
{
return value.ToString(string.Format("0.{0}", new string('0', decimalSeparator)));
}
您可能正在尋找格式化小數點的字符串表示形式的方法。 嘗試這個:
decimal myNumber = 12345.67m;
string formattedNumber = myNumber.ToString("N3");
Console.WriteLine(formattedNumber); // Prints "12345.670"
請參閱此處以獲取更多信息: https : //msdn.microsoft.com/zh-cn/library/dwhawy9k%28v=vs.110%29.aspx
從MSDN:
標准數字格式字符串用於格式化常用數字類型。 標准數字格式字符串的格式為Axx,其中:
A是稱為格式說明符的單個字母字符。 任何包含多個字母字符(包括空格)的數字格式字符串都將解釋為自定義數字格式字符串。 有關更多信息,請參見自定義數字格式字符串。
xx是稱為精度說明符的可選整數。 精度說明符的范圍是0到99,並且會影響結果中的位數。 請注意,精度說明符控制數字的字符串表示形式中的位數。 它不會舍入數字本身。 要執行舍入運算,請使用Math.Ceiling,Math.Floor或Math.Round方法。
當精度說明符控制結果字符串中的小數位數時,結果字符串將反映四舍五入為零的數字(即使用MidpointRounding.AwayFromZero)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.