標準の数値書式指定文字列
一般的な数値型を書式設定するには、標準の数値書式指定文字列を使用します。 標準の数値書式指定文字列の形式は [format specifier][precision specifier]
です。
"書式指定子"は、数値書式の種類 (通貨やパーセントなど) を指定する単一の英文字です。 空白を含む複数の英文字で構成される数値書式指定文字列は、カスタム数値書式指定文字列として解釈されます。 詳細については、「 Custom 数値書式指定文字列を参照してください。
"精度指定子" は、結果の文字列の桁数に影響する、省略可能な整数です。 精度指定子は、数値の文字列表現の桁数を制御します。
精度指定子が結果文字列の小数部の桁数を制御する場合、結果文字列には、無限に正確な結果に最も近い表現可能な結果に丸められた数値が反映されます。
Note
精度指定子は、結果文字列の桁数を決定します。 結果文字列に先頭または末尾のスペースまたはその他の文字 (0 など) を埋め込むには、Text.PadStart 関数と Text.PadEnd 関数を使用し、これらの関数の全体の長さ
count
を使用して結果文字列を埋め込みます。
標準の数値書式指定文字列は、Number.ToText 関数でサポートされています。
標準書式指定子
次の表に、標準数値書式指定子の説明および書式指定子ごとのサンプル出力を示します。 標準の数値書式指定文字列の使用に関する詳細については、 Notes セクションに移動し、 Code の使用例 セクションを参照してください。
Note
特定のカルチャに合わせて文字列を書式指定すると、その結果は次の例とは異なる場合があります。 オペレーティング システムの設定、ユーザー設定、環境変数、使用するシステムのその他の設定はすべて、形式に影響を与える可能性があります。
書式指定子 | 名前 | 説明 | 例 |
---|---|---|---|
"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 (10 進数型) | 結果: 必要に応じて負の符号が付く整数。 サポート:整数型のみ。 精度指定子:最小桁数。 既定の精度指定子:必要な最小桁数。 詳細情報:10 進数 ("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" | パーセント | 結果: 数値に 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" | 16 進数 | 結果: 16 進数文字列。 サポート:整数型のみ。 精度指定子:結果文字列の桁数。 詳細については、「16 進数 ("X") 書式指定子」を参照してください。 |
255 ("X") -> FF -1 ("x") -> ff 255 ("x4") -> 00ff -1 ("X4") -> 00FF |
その他の 1 文字 | 未定義の指定子 | 結果: 実行時に式エラーをスローします。 |
標準の数値形式文字列を使用する
標準の数値書式指定文字列を使用して、数値の書式設定を定義できます。
Number.ToText
format
パラメーターに渡すことができます。 次の例では、数値の書式を現在のカルチャ (ここでは en-US カルチャ) の通貨文字列に設定しています。
Number.ToText(123.456, "C2")
// Displays $123.46
必要に応じて、Text.PadStart 関数と Text.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.
10 進数書式指定子 (D)
"D" (10 進数) 書式指定子は、0 ~ 9 の数字から成る文字列に数値を変換します。負の数値の場合は、文字列の先頭にマイナス記号が挿入されます。 この書式指定は整数型でだけサポートされています。
精度指定子は、変換後の文字列の最小桁数を示します。 必要に応じて、精度指定子によって指定された桁数に達するまで、数値の左側にゼロが埋め込まれます。 精度指定子が指定されていない場合の既定値は、先行するゼロを含めずに整数を表すために必要な最小値です。
結果文字列は、現在のカルチャの書式設定情報の影響を受けます。
次の例では、10 進書式指定子を使用して値を書式設定します。
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 の 1 桁の数字を示します。 負の数値の場合、変換後の文字列の先頭にマイナス記号が挿入されます。 小数点の前には 1 桁の数字が必ず示されます。
精度指定子は、小数部の桁数を示します。 精度指定子を省略すると、小数部の桁数として既定の 6 桁が使用されます。
書式指定子が大文字の場合は指数部の前に "E" が挿入され、小文字の場合は "e" が挿入されます。 指数部は常に、プラス記号またはマイナス記号のいずれかと、3 桁以上の桁で構成されます。 指数部の桁数が最小桁数の 3 桁よりも少ない場合には、3 桁になるようにゼロが埋め込まれます。
結果文字列は、現在のカルチャの書式設定情報の影響を受けます。
次の例では、指数書式指定子を使って 値の書式を設定します。
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
Note
前のサンプルの Number.ToText の最後のパラメーターの空白のテキスト値 ("") は、インバリアント カルチャを参照します。
固定小数点書式指定子 (F)
固定小数点 ("F) 書式指定子は、"-ddd.ddd…" という形式の文字列に数値を変換します。この "d" は 0 から 9 の 1 桁の数字を示します。 負の数値の場合、変換後の文字列の先頭にマイナス記号が挿入されます。
精度指定子は、小数部の桁数を示します。 精度指定子を省略すると、数値で使用する小数点以下の桁数の既定値は 2 になります。
結果文字列は、現在のカルチャの書式設定情報の影響を受けます。
次の例では、固定小数点書式指定子を使用して double と整数値を書式設定します。
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") 書式指定子は、数値の型や、精度指定子が指定されているかどうかに応じて、固定小数点表記または指数表記のいずれかのより簡潔な形式に数値を変換します。 精度指定子は、結果文字列の有効桁数の最大値を定義します。 精度指定子が省略されている場合や、0 である場合は、次の表に示すように、数値の型によって既定の精度が決定されます。
数値型 | 既定の精度 |
---|---|
Byte.Type または Int8.Type |
3 桁 |
Int16.Type |
5 桁 |
Int32.Type |
10 桁 |
Int64.Type |
19 桁 |
Single.Type |
9 桁 |
Double.Type |
17 桁の数字 |
Decimal.Type |
15 桁 |
数値を指数表記で表した結果の指数部が -5 よりも大きく、精度指定子よりも小さい場合は、固定小数点表記が使用されます。それ以外の場合は、指数表記が使用されます。 結果には必要に応じて小数点が含まれ、小数点の後続のゼロは省略されます。 精度指定子が存在し、指定された精度を結果の有効桁数が超える場合は、超過した桁は丸められ削除されます。
ただし、数値が Decimal.Type
で、精度指定子が省略されている場合は、常に固定小数点表記が使用され、後続のゼロは保持されます。
指数表記が使用される場合、結果の指数部には、書式指定子が "G" のときには "E"、書式指定子が "g" のときには "e" というプレフィックスが付きます。 指数部には少なくとも 2 桁が含まれます。 これは、指数部に少なくとも 3 桁が含まれる、指数書式指定子によって生成される指数表記の書式とは異なります。
結果文字列は、現在のカルチャの書式設定情報の影響を受けます。
次の例では、一般書式指定子を使って、さまざまな浮動小数点値の書式を設定します。
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" (Numeric: 数値) は、数値を "-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
16 進書式指定子 (X)
16 進数 ("X") 書式指定子は、16 進数文字列に数値を変換します。 書式指定子の大文字と小文字によって、9 よりも大きい 16 進数値を示すアルファベット文字が大文字と小文字のどちらで表示されるかが決まります。 たとえば、"X" を指定すると "ABCDEF" となり、"x" を指定すると "abcdef" となります。 この書式指定は整数型でだけサポートされています。
精度指定子は、変換後の文字列の最小桁数を示します。 必要に応じて、精度指定子によって指定された桁数に達するまで、数値の左側にゼロが埋め込まれます。
結果文字列は、現在のカルチャの書式設定情報の影響を受けられません。
次の例では、16 進数の書式指定子を使って 値の書式を設定します。
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.Type
、 Int16.Type
、 Int32.Type
、およびInt64.Type
です。 浮動小数点数値型には、Decimal.Type
、Single.Type
、および Double.Type
があります。
浮動小数点の無限大値と NAN (非数) 値
書式指定文字列に関係なく、Decimal.Type
、Single.Type
、または Double.Type
浮動小数点型の値が正の無限大、負の無限大、または数値 (NaN) でない場合、書式設定された文字列は、現在適用可能なカルチャで指定されているそれぞれの Number.PositiveInfinity、Number.NegativeInfinity、または Number.NaN 定数の値です。
コードの例
次の例では、en-US カルチャとすべての標準の数値書式指定子を使用して、浮動小数点と整数の数値を書式設定します。 この例では、2 つの特定の数値型 (Double.Type
と Int32.Type
) を使用しますが、他の数値基本型 (Byte.Type
、 Decimal.Type
、 Int8.Type
、 Int16.Type
、 Int64.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