標準數值格式字串簡述

 

想要對數值做不同的呈現,則是要利用「格式規範」(format specifier)來達到目地,

列出以下格式規範與範例

 

一、貨幣 "C" 或 "c"

using System;
using System.Globalization;

public class Example
{
    public static void Main()
    {
        double a = 1234.5678;
        Console.WriteLine(a.ToString("C"));
        Console.WriteLine(a.ToString("C", new CultureInfo("en-US")));
        Console.WriteLine(a.ToString("C2", new CultureInfo("ja-JP")));
        Console.ReadKey();
    }
}

結果畫面

說明:

1、格式規範使用字串 "C" 或 "c" 都一樣

2、格式規範後面可以再接精確度規範,表示在結果字串中顯示的小數位數,範圍0到99

3、表示在結果字串中所需要的小數位數如果要格式化的值擁有的小數位數超過指定或預設的小數位數,

則分數值會在結果字串中四捨五入,會使用MidpointRounding.AwayFromZero策略。

4、可以利用CultureInfo類別物件文化特性名稱的指定來顯現各國的貨幣符號與習慣樣式。

 

二、Decimal "D" 或 "d"

using System;

public class Example
{
    public static void Main()
    {
        int a = 1234;
        Console.WriteLine(a.ToString("d"));
        Console.WriteLine(a.ToString("d6"));
        Console.ReadKey();
    }
}

結果畫面

說明:

1、格式規範會將數字轉換為十進位數 (0-9) 的字串,只有整數類資料類型 (Integral Type) 才支援這個格式。

2、精確度規範指示產生的字串中所需要的最少位數。 如果有必要,數值以零填補其左邊,產生精確度規範所指定的位數。

 

三、指數 (科學記號) "E" 或 "e"

using System;

public class Example
{
    public static void Main()
    {
        double a = 1234.5678;
        Console.WriteLine(a.ToString("E"));
        Console.WriteLine(a.ToString("E10"));
        Console.ReadKey();
    }
}

結果畫面

說明:

1、以指數型式來表現。

2、例如精確度規範為"E10"時,則表示小數位數會有10位,必要時,指數將以零填補來符合指定的最少位數。

 

四、固定點 "F" 或 "f"

using System;

public class Example
{
    public static void Main()
    {
        double a = 1234.5678;
        Console.WriteLine(a.ToString("F"));
        Console.WriteLine(a.ToString("F5"));
        Console.ReadKey();
    }
}

結果畫面

說明:

1、跟指數不太一樣,反而跟貨幣有一點像,就是少了貨幣符號。

2、例如精確度規範為"E5"時,則表示小數位數會有5位,必要時,指數將以零填補來符合指定的最少位數。

 

五、一般 "G" 或 "g"

using System;

public class Example
{
    public static void Main()
    {
        double a = 1234.5678;
        Console.WriteLine(a.ToString("G"));
        Console.WriteLine(a.ToString("G5"));
        Console.WriteLine(a.ToString("G3"));
        Console.WriteLine();
        int b = 1234;
        Console.WriteLine(b.ToString("G"));
        Console.WriteLine(b.ToString("G5"));
        Console.WriteLine(b.ToString("G3"));
        Console.WriteLine();
        decimal c = 1234;
        Console.WriteLine(c.ToString("G"));
        Console.WriteLine(c.ToString("G5"));
        Console.WriteLine(c.ToString("G3"));
        Console.ReadKey();
    }
}

結果畫面

說明:

1、一般 ("G") 格式規範會將數字轉換為固定點和科學標記法兩者中最精簡的一個,

視數字的類型以及精確度規範是否存在而定。 精確度規範定義結果字串中最多可顯示的有效位數。

如果精確度規範已省略或為零,則由數字的類型決定預設有效位數。

 

六、群組分隔符號 "N" 或 "n"

using System;

public class Example
{
    public static void Main()
    {
        double a = 1234.5678;
        Console.WriteLine(a.ToString("N"));
        Console.WriteLine(a.ToString("N5"));
        Console.WriteLine(a.ToString("N3"));
        Console.ReadKey();
    }
}

結果畫面

說明:

1、整數以上每三位數就會有一個群組分隔符號 ","。

 

七、百分比 "P" 或 "p"

using System;

public class Example
{
    public static void Main()
    {
        double a = 1234.5678;
        Console.WriteLine(a.ToString("P"));
        Console.WriteLine(a.ToString("P5"));
        Console.WriteLine(a.ToString("P3"));
        Console.ReadKey();
    }
}

結果畫面

 

八、來回 "R" 或 "r"

using System;

public class Example
{
    public static void Main()
    {
        double a = Math.PI;
        Console.WriteLine(a.ToString("R"));
        Console.WriteLine(a.ToString("R5"));
        Console.WriteLine(a.ToString("R3"));
        Console.WriteLine();
        double b = 1234.5678;
        Console.WriteLine(b.ToString("R"));
        Console.WriteLine(b.ToString("R5"));
        Console.WriteLine(b.ToString("R3"));

        Console.ReadKey();
    }
}

結果畫面

說明:

1、只有 Single、Double 和 BigInteger 類型才支援這個格式

2、如果該值成功地剖析回到相同數值,即會使用一般格式規範來格式化。

如果該值無法成功地剖析回到相同數值,即會使用 17 位有效位數 (如果是 Double) 或 9 位有效位數 (如果是 Single) 來格式化該值。

 

九、十六進位 "X" 或 "x"

using System;

public class Example
{
    public static void Main()
    {
        int a = 132190;
        Console.WriteLine(a.ToString("X"));
        Console.WriteLine(a.ToString("X6"));
        Console.WriteLine(a.ToString("x3"));
        Console.WriteLine();

        int b = 0x2045e;
        Console.WriteLine(b.ToString("X"));
        Console.WriteLine(b.ToString("X6"));
        Console.WriteLine(b.ToString("X3"));
        Console.WriteLine();

        Console.ReadKey();
    }
}

結果畫面

說明:

1、格式規範使用大寫"X"則會顯示大寫"ABCDEF",小寫"x"則會顯示小寫"abcdef"

2、精確度規範大於實際位數時,則依精確度規範左邊補n個零。

3、精確度規範小於實際位數時,則以實際位數為準。

 

參考資料:

標準數值格式字串

Number Formatting