簡體   English   中英

用逗號后的自定義位數格式化十進制數字

[英]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)。

顯示字符串時,應指定格式。

當您轉換為字符串時,您需要執行以下操作:

String.Format("{0:0.00}", formatedNumber);

請參閱本文以獲取更多詳細信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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