共用方式為


標準數值格式字串

標準數值格式字串會用來格式化一般數字類型。 標準數值格式字串會採用 [format specifier][precision specifier] 格式,其中:

  • 格式規範 是單一字母字元,可指定數位格式的類型,例如貨幣或百分比。 任何包含一個以上字母字元 (包含泛空白字元 (White Space)) 的數值格式字串都會解譯為自訂數值格式字串。 如需詳細資訊,請移至 自定義數值格式字串

  • 有效位數規範 是會影響所產生字串中位數的選擇性整數。 有效位數規範會控制數位字串表示中的位數。

    當有效位數規範控制結果字串中的小數位數時,結果字串會反映捨入到最接近無限精確結果的可表示結果的數位。

    注意

    有效位數規範可判斷結果字串中的位數。 若要使用前置或尾端空格或其他字元來填補結果字串(例如 0),請使用 Text.PadStartText.PadEnd 函式,並在這些函式中使用整體長度 count 來填補結果字元串。

Number.ToText 函式支援標準數值格式字串。

標準格式規範

下表描述標準數值格式規範,並顯示每個格式範例所產生的範例輸出。 如需使用標準數值格式字串的其他資訊,請移至 [附註] 區段,以取得其使用方式的完整說明。

注意

特定文化特性之格式化字串的結果可能與下列範例不同。 您在系統上使用的作業系統設定、使用者設定、環境變數和其他設定都可能會影響格式。

格式規範 名稱 描述 範例
"C" 或 "c" 貨幣 結果:貨幣值。

支援的類型:所有數字類型。

有效位數規範:小數位數的數目。

預設有效位數規範:由文化特性定義。

詳細資訊:貨幣 ("C") 格式規範
123.456 (“C”, en-US)
-> \$123.46

123.456 (“C”, fr-FR)
-> 123,46 €

123.456 (“C”, ja-JP)
-> ¥123

-123.456 (“C3”, en-US)
-> (\$123.456)

-123.456 (“C3”, fr-FR)
-> -123,456 €

-123.456 (“C3”, ja-JP)
-> -¥123.456
"D" 或 "d" Decimal 結果:帶選擇性負號的整數位數。

支援的類型:只有整數類型。

精確度規範:最少位數。

預設精確度規範:必要的最少位數。

詳細資訊:十進位 ("D") 格式規範
1234 (“D”)
-> 1234

-1234 (“D6”)
-> -001234
"E" 或 "e" 指數 (科學記號) 結果:指數標記法。

支援的類型:所有數字類型。

有效位數規範:小數位數的數目。

預設精確度規範:6。

詳細資訊:指數 ("E") 格式規範
1052.0329112756 (“E”, en-US)
-> 1.052033E+003

1052.0329112756 (“e”, fr-FR)
-> 1,052033e+003

-1052.0329112756 (“e2”, en-US)
-> -1.05e+003

-1052.0329112756 (“E2”, fr-FR)
-> -1,05E+003
"F" 或 "f" 固定點 結果:帶選擇性負號的整數和小數位數。

支援的類型:所有數字類型。

有效位數規範:小數位數的數目。

預設有效位數規範:由文化特性定義。

詳細資訊:固定點 ("F") 格式規範
1234.567 (“F”, en-US)
-> 1234.57

1234.567 (“F”, de-DE)
-> 1234,57

1234 (“F1”, en-US)
-> 1234.0

1234 (“F1”, de-DE)
-> 1234,0

-1234.56 (“F4”, en-US)
-> -1234.5600

-1234.56 (“F4”, de-DE)
-> -1234,5600
"G" 或 "g" 一般 結果:固定點和科學標記法兩者中更精簡的一個。

支援的類型:所有數字類型。

精確度規範:有效位數。

預設精確度規範:因數字類型而異。

詳細資訊:一般 ("G") 格式規範
-123.456 (“G”, en-US)
-> -123.456

-123.456 (“G”, sv-SE)
-> -123,456

123.4546 (“G4”, en-US)
-> 123.5

123.4546 (“G4”, sv-SE)
-> 123,5

-1.234567890e-25 (“G”, en-US)
-> -1.23456789E-25

-1.234567890e-25 (“G”, sv-SE)
-> -1,23456789E-25
"N" 或 "n" 數字 結果:帶選擇性負號的整數和小數位數、群組分隔符號,以及小數分隔符號。

支援的類型:所有數字類型。

精確度規範:想要的小數位數。

預設有效位數規範:由文化特性定義。

詳細資訊:數值 ("N") 格式規範
1234.567 (“N”, en-US)
-> 1,234.57

1234.567 (“N”, ru-RU)
-> 1 234,57

1234 (“N1”, en-US)
-> 1,234.0

1234 (“N1”, ru-RU)
-> 1 234,0

-1234.56 (“N3”, en-US)
-> -1,234.560

-1234.56 (“N3”, ru-RU)
-> -1 234,560
"P" 或 "p" Percent 結果:乘以 100 並加上百分比符號來顯示的數字。

支援的類型:所有數字類型。

精確度規範:想要的小數位數。

預設有效位數規範:由文化特性定義。

詳細資訊:百分比 ("P") 格式規範
1 (“P”, en-US)
-> 100.00 %

1 (“P”, fr-FR)
-> 100,00 %

-0.39678 (“P1”, en-US)
-> -39.7 %

-0.39678 (“P1”, fr-FR)
-> -39,7 %
"X" 或 "x" 十六進位 結果:十六進位字串。

支援的類型:只有整數類型。

精確度規範:結果字串中的位數。

詳細資訊: 十六進位 (“X”) 格式規範
255 (“X”)
-> FF

-1 (“x”)
-> ff

255 (“x4”)
-> 00ff

-1 (“X4”)
-> 00FF
任何其他單一字元 未知的規範 結果:在運行時間擲回表達式錯誤。

使用標準數值格式字串

標準數值格式字串可用來定義數值的格式。 它可以傳遞至 Number.ToTextformat 參數。 下列範例會以目前的文化特定 (在此範例中是 en-US 文化特性) 來將數值格式化為貨幣字串。

Number.ToText(123.456, "C2")
// Displays $123.46

或者,您可以在 Text.PadStartText.PadEnd 函式中提供 count 自變數,以指定數值字段的寬度,以及其值是靠右或靠左對齊。 例如,下列範例會靠左對齊 28 個字元欄位中的貨幣值,並在 14 個字元的欄位中將貨幣值靠右對齊(使用單一空格字型時)。

let
    amounts = {16305.32, 18794.16},
    result = Text.Format("    Beginning Balance           Ending Balance#(cr,lf)    #{0}#{1}",
    {
        Text.PadEnd(Number.ToText(amounts{0}, "C2"), 28), 
        Text.PadStart(Number.ToText(amounts{1}, "C2"), 14)
    })
in
    result

// Displays:
//    Beginning Balance           Ending Balance
//    $16,305.32                      $18,794.16

下列各節提供每個標準數值格式字串的詳細資訊。

貨幣格式規範 (C)

"C" (表示貨幣) 格式規範會將數字轉換為表示貨幣金額的字串。 精確度規範表示在結果字串中所需要的小數位數。 如果省略有效位數規範,用於貨幣值的預設小數字數是 2。

如果要格式化的值擁有的小數位數超過指定或預設的小數位數,則分數值會在結果字串中四捨五入。 如果指定的小數位數右邊的值為 5 或更大值,則結果字串中的最後一位數會遠離零四捨五入。

結果字串會受到目前文化特性的格式信息影響。

下列範例會使用貨幣格式規範來格式化值:

let
    Source = 
    {
        Number.ToText(12345.6789, "C"),
        Number.ToText(12345.6789, "C3"),
        Number.ToText(12345.6789, "C3", "da-DK")
    }
in
    Source 

// The example displays the following list on a system whose
// current culture is English (United States):
//       $12,345.68
//       $12,345.679
//       12.345,679 kr.

十進位格式規範 (D)

"D" (表示十進位) 格式規範會將數字轉換為十進位數 (0-9) 的字串,如果數字為負數,則在前面加上負號。 只有整數類資料類型 (Integral Type) 才支援這個格式。

精確度規範指示產生的字串中所需要的最少位數。 如果有必要,數值以零填補其左邊,產生精確度規範所指定的位數。 如果未指定精確度規範,則預設值為在不填補前置零的情況下,表示整數所需的最小值。

結果字串會受到目前文化特性的格式信息影響。

下列範例會使用十進位格式規範來格式化值。

let
    Source = 
    { 
        Number.ToText(12345, "D"),
        // Displays 12345

        Number.ToText(12345, "D8"),
        // Displays 00012345

        Number.ToText(-12345, "D"),
        // Displays -12345

        Number.ToText(-12345, "D8")
        // Displays -00012345
    }
in
    Source 

指數格式規範 (E)

指數 ("E") 格式規範會將數字轉換為 "-d.ddd…E+ddd" 或 "-d.ddd…e+ddd" 形式的字串,其中 "d" 表示數字 (0-9)。 字串以負號開始,如果數值為負數的話。 在小數點前面永遠會有確切一個位數。

精確度規範指示小數點之後需要的位數。 如果省略精確度規範,則使用小數點之後有六位數的預設值。

格式規範的大小寫表示要在指數之前加上 "E" 還是 "e"。 指數永遠由正號或負號和最少三位數所組成。 必要時,指數將以零填補來符合指定的最少位數。

結果字串會受到目前文化特性的格式信息影響。

下列範例會使用指數格式規範來格式化值:

let
    Source = 
    { 
        Number.ToText(12345.6789, "E", ""),
        // Displays 1.234568E+004

        Number.ToText(12345.6789, "E10", ""),
        // Displays 1.2345678900E+004

        Number.ToText(12345.6789, "e4", ""),
        // 1.2346e+004

        Number.ToText(12345.6789, "E", "fr-FR")
        // Displays 1,234568E+004
    }
in
    Source 

注意

上一個範例中最後一個參數中 Number.ToText 的空白文字值 (“”) 是指不因文化特性而異。

固定點格式規範 (F)

固定點 ("F") 格式規範,會將數字轉換為 "-ddd.ddd…" 形式的字串,其中的每個 "d" 代表一個數字 (0-9)。 字串以負號開始,如果數值為負數的話。

精確度規範指示所需要的小數位數。 如果省略有效位數規範,則數值中要使用的小數字數預設為2。

結果字串會受到目前文化特性的格式信息影響。

下列範例會使用固定點格式規範來格式化雙精度浮點和整數值:

let
    Source =
    {
        Number.ToText(17843, "F", ""),
        // Displays 17843.00

        Number.ToText(-29541, "F3", ""),
        // Displays -29541.000

        Number.ToText(18934.1879, "F", ""),
        // Displays 18934.19

        Number.ToText(18934.1879, "F0", ""),
        // Displays 18934

        Number.ToText(-1898300.1987, "F1", ""),
        // Displays -1898300.2

        Number.ToText(-1898300.1987, "F3", "es-ES")
        // Displays -1898300,199
    }
in
    Source

一般格式規範 (G)

一般 ("G") 格式規範會將數字轉換為固定點和科學標記法兩者中較精簡的一個,視數字的類型以及精確度規範是否存在而定。 精確度規範定義結果字串中最多可顯示的有效位數。 如果精確度規範已省略或為零,則由數字的類型決定預設有效位數,如下表所示。

數值類型 預設有效位數
Byte.TypeInt8.Type 3 位數
Int16.Type 5 位數
Int32.Type 10 位數
Int64.Type 19 位數
Single.Type 9 位數
Double.Type 17 位數
Decimal.Type 15 位數

如果以科學標記法來表示數字所產生的指數大於 -5 而且小於精確度規範,則會使用固定點標記法,否則使用科學標記法。 必要時,結果會包含小數點並省略小數點後最後幾個零。 如果精確度規範存在,且結果中的有效位數超過指定的有效位數,則會四捨五入來移除超出的尾端位數。

不過,如果數字是 Decimal.Type,而且省略精確度規範,則一律會使用固定點標記法,並且保留尾端的零。

使用科學標記法時,結果中的指數前面會加上 "E" (如果格式規範為 "G") 或 "e" (如果格式規範為 "g")。 指數至少包含兩位數。 這不同於指數格式規範所產生的科學標記法格式,此格式會在指數中包含至少三位數。

結果字串會受到目前文化特性的格式信息影響。

下列範例會使用一般格式規範來格式化各種浮點值:

let
    Source =
    {
        Number.ToText(12345.6789, "G", ""),
        // Displays 12345.6789

        Number.ToText(12345.6789, "G", "fr-FR"),
        // Displays 12345,6789

        Number.ToText(12345.6789, "G7", ""),
        // Displays 12345.68

        Number.ToText(.0000023, "G", ""),
        // Displays 2.3E-06

        Number.ToText(.0000023, "G", "fr-FR"),
        // Displays 2,3E-06

        Number.ToText(.0023, "G", ""),
        // Displays 0.0023

        Number.ToText(1234, "G2", ""),
        // Displays 1.2E+03

        Number.ToText(Number.PI, "G5", "")
        // Displays 3.1416
    }
in
    Source

數值格式規範 (N)

數字 ("N") 格式規範會將數字轉換為 "-d,ddd,ddd.ddd…" 形式的字串,其中 "-" 表示負數符號 (如有需要)、"d" 表示數字 (0-9)、"," 表示群組分隔符號,而 "." 表示小數點符號。 精確度規範指示小數點之後需要的位數。 如果省略有效位數規範,則小數字數是由目前的文化特性所定義。

結果字串會受到目前文化特性的格式信息影響。

下列範例會使用數位格式規範來格式化各種浮點值:

let
    Source =
    {
        Number.ToText(-12445.6789, "N", ""),
        // Displays -12,445.68

        Number.ToText(-12445.6789, "N1", "sv-SE"),
        // Displays -12 445,7

        Number.ToText(123456789, "N1", "")
        // Displays 123,456,789.0
    }
in
    Source

百分比格式規範 (P)

百分比 ("P") 格式規範會將數字乘以 100,然後轉換為表示百分比的字串。 精確度規範指示所需要的小數位數。 如果省略有效位數規範,則會使用目前文化特性所提供的預設數值有效位數。

下列範例會使用百分比格式規範來格式化浮點值:

let
    Source =
    {
        Number.ToText(.2468013, "P", ""),
        // Displays 24.68 %

        Number.ToText(.2468013, "P", "hr-HR"),
        // Displays 24,68 %

        Number.ToText(.2468013, "P1", "en-US")
        // Displays 24.7%
    }
in
    Source

十六進位格式規範 (X)

十六進位 ("X") 格式規範會將數字轉換為十六進位數字的字串。 格式規範的大小寫表示對於大於 9 的十六進位數字,要使用大寫還是小寫字元。 例如,使用 "X" 會產生 "ABCDEF",使用 "x" 則會產生 "abcdef"。 只有整數類資料類型 (Integral Type) 才支援這個格式。

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

結果字串不會受到目前文化特性的格式信息影響。

下列範例會使用十六進位格式規範格式化 值。

let
    Source =
    {
        Number.ToText(0x2045e, "x"),
        // Displays 2045e

        Number.ToText(0x2045e, "X"),
        // Displays 2045E

        Number.ToText(0x2045e, "X8"),
        // Displays 0002045E

        Number.ToText(123456789, "X"),
        // Displays 75BCD15

        Number.ToText(123456789, "X2")
        // Displays 75BCD15
    }
in
    Source

備註

本節包含使用標準數值格式字串的其他資訊。

整數類資料類型與浮點數值類型

標準數值格式規範的某些描述會參考整數類資料類型或浮點數值類型。 整數數值類型為Byte.Type、、Int8.TypeInt16.TypeInt32.TypeInt64.Type 。 浮點數值類型有 Decimal.TypeSingle.TypeDouble.Type

無限浮點數與 NaN

不論格式字串為何,如果 Decimal.TypeSingle.TypeDouble.Type 浮點類型為正無限大、負無限大或非數位 (NaN),格式化字串是目前適用文化特性所指定之個別 Number.PositiveInfinityNumber.NegativeInfinityNumber.NaN 常數的值。

程式碼範例

下列範例會使用 en-US 文化特性和所有標準數值格式規範來格式化浮點和整數數值。 這個範例使用兩個特定的數值類型 (Double.Type和 ),但會產生任何其他數值基底類型 (Int32.Type、 、 Byte.TypeDecimal.TypeInt8.TypeInt16.TypeInt64.Type) 的類似結果。Single.Type

let
    // Display text representations of numbers for en-US culture
    culture = "en-US",

    // Output floating point values
    floating = Double.From(10761.937554),
    #"Floating results" = 
    {
        Text.Format("C: #{0}", {Number.ToText(floating, "C", culture)}),         // Displays "C: $10,761.94"
        Text.Format("E: #{0}", {Number.ToText(floating, "E03", culture)}),       // Displays "E: 1.076E+004"
        Text.Format("F: #{0}", {Number.ToText(floating, "F04", culture)}),       // Displays "F: 10761.9376"
        Text.Format("G: #{0}", {Number.ToText(floating, "G", culture)}),         // Displays "G: 10761.937554"
        Text.Format("N: #{0}", {Number.ToText(floating, "N03", culture)}),       // Displays "N: 10,761.938"
        Text.Format("P: #{0}", {Number.ToText(floating/10000, "P02", culture)})  // Displays "P: 107.62%"
    },
    
    // Output integral values
    integral = Int32.From(8395),
    #"Integral results" =
    {
        Text.Format("C: #{0}", {Number.ToText(integral, "C", culture)}),         // Displays "C: $8,395.00"
        Text.Format("D: #{0}", {Number.ToText(integral, "D6", culture)}),        // Displays "D: 008395"
        Text.Format("E: #{0}", {Number.ToText(integral, "E03", culture)}),       // Displays "E: 8.395E+003"
        Text.Format("F: #{0}", {Number.ToText(integral, "F01", culture)}),       // Displays "F: 8395.0"
        Text.Format("G: #{0}", {Number.ToText(integral, "G", culture)}),         // Displays "G: 8395"
        Text.Format("N: #{0}", {Number.ToText(integral, "N01", culture)}),       // Displays "N: 8,395.0"
        Text.Format("P: #{0}", {Number.ToText(integral/10000, "P02", culture)}), // Displays "P: 83.95%"
        Text.Format("X: 0x#{0}", {Number.ToText(integral, "X", culture)})        // Displays "X: 0x20CB"
    },
    results = #"Floating results" & #"Integral results"

in
    results