次の方法で共有


カスタム数値形式文字列

1 つ以上のカスタム数値指定子で構成されるカスタム数値書式指定文字列を作成して、数値データの書式設定方法を定義できます。 カスタム数値書式指定文字列は、 標準の数値書式指定文字列ではない任意の書式指定文字列

次の表に、カスタム数値書式指定子の説明および書式指定子ごとのサンプル出力を示します。 カスタム数値書式指定文字列の使用に関する詳細については、 Notes セクションに移動し、使用の包括的な図については Example セクションを参照してください。

書式指定子 名前 説明 使用例
"0" ゼロ プレースホルダー 対応する数字でゼロを置き換えます。置き換えが行われるのは、対応する数字が存在する場合です。それ以外の場合は、結果の文字列にはゼロが表示されます。

詳細情報:"0" カスタム指定子
1234.5678 ("00000") -> 01235

0.45678 ("0.00", en-US) -> 0.46

0.45678 ("0.00", fr-FR) -> 0,46
"#" 桁プレースホルダー 対応する数字で "#" 記号を置き換えます。置き換えが行われるのは、対応する数字が存在する場合です。それ以外の場合は、結果の文字列に数字は表示されません。

入力文字列内の対応する数字が重要でない 0 の場合、結果文字列に数字は表示されません。 For example, 0003 ("####") -> 3.

詳細情報:"#" カスタム指定子
1234.5678 ("#####") -> 1235

0.45678 ("#.##", en-US) -> .46

0.45678 ("#.##", fr-FR) -> ,46
"." 小数点 結果の文字列の小数点位置を決定します。

詳細情報:"."カスタム指定子」を参照してください。
0.45678 ("0.00", en-US) -> 0.46

0.45678 ("0.00", fr-FR) -> 0,46
"," 桁区切り記号および数値の位取り 桁区切り記号および数値位取り指定子の両方として機能します。 桁区切り記号としては、各グループの間に、ローカライズされた桁区切り記号文字を挿入します。 数値位取り指定子としては、指定されたコンマごとに、数値を 1000 で除算します。

詳細情報:"," カスタム指定子
桁区切り記号:

2147483647 ("##,#", en-US) -> 2,147,483,647

2147483647 ("##,#", es-ES) -> 2.147.483.647

位取り指定子:

2147483647 ("#,#,,", en-US) -> 2,147

2147483647 ("#,#,,", es-ES) -> 2.147
"%" パーセント プレースホルダー 数値に 100 を乗算し、結果の文字列に、ローカライズされたパーセント記号を挿入します。

詳細情報:"%" カスタム指定子
0.3697 ("%#0.00", en-US) -> %36.97

0.3697 ("%#0.00", el-GR) -> %36,97

0.3697 ("##.0 %", en-US) -> 37.0 %

0.3697 ("##.0 %", el-GR) -> 37,0 %
"‰" パーミル プレースホルダー 数値に 1000 を乗算し、結果の文字列にローカライズされたパーミル記号を挿入します。

詳細情報:"‰" カスタム指定子
0.03697 ("#0.00‰", en-US) -> 36.97‰

0.03697 ("#0.00‰", ru-RU) -> 36,97‰
"E0"

"E+0"

"E-0"

"E0"

"E+0"

"E-0"
指数表記 後に 0 (ゼロ) が 1 つ以上続く場合に、指数表記を使用して結果の書式を設定します。 大文字 "E" と小文字 "e" は、結果の文字列の指数記号を大文字にするか小文字にするかを示します。 "E" 文字または "e" 文字の後に続くゼロの数によって、指数部の最小桁数が決まります。 正符号 (+) は、符号文字が指数部の前に常に挿入されることを示します。 負符号 (-) は、指数部が負の値の場合にだけその前に符号文字が挿入されることを示します。

詳細情報:"E" カスタム指定子と "e" カスタム指定子
987654 ("#0.0e0") -> 98.8e4

1503.92311 ("0.0##e+00") -> 1.504e+03

1.8901385E-16 ("0.0e+00") -> 1.9e-16
"\", "''", """" エスケープ文字 次の文字を、カスタム書式指定子ではなくリテラルとして解釈します。

詳細情報: Escape 文字
987654 ("\###00\#") -> #987654#

987654 ("'#'#00'#'") -> #987654#

987654 ("""#""##00"""#"") -> #987654#
'文字列'

"文字列"
リテラル文字列区切り記号 囲まれた文字列が結果の文字列にそのままコピーされることを示します。

詳細情報:文字リテラル
68 ("# 'degrees'") -> 68 degrees

68 ("#' degrees'") -> 68 degrees
; セクション区切り記号 正の数値、負の数値、およびゼロの数値に対して、別々の書式指定文字列を使用してセクションを定義します。

詳細情報:";" セクション区切り記号
12.345 ("#0.0#;(#0.0#);-\0-") -> 12.35

0 ("#0.0#;(#0.0#);-\0-") -> -0-

-12.345 ("#0.0#;(#0.0#);-\0-") -> (12.35)

12.345 ("#0.0#;(#0.0#)") -> 12.35

0 ("#0.0#;(#0.0#)") -> 0.0

-12.345 ("#0.0#;(#0.0#)") -> (12.35)
その他 上記以外のすべての文字 文字が結果の文字列にそのままコピーされます。

詳細情報:文字リテラル
68 ("# °") -> 68 °

以降では、それぞれのカスタム数値書式指定子について詳しく説明します。

"0" カスタム指定子

"0" カスタム書式指定子は、ゼロ プレースホルダー記号として機能します。 書式が設定される値で、書式指定文字列のゼロに対応する位置に数字がある場合には、この数字が結果の文字列にコピーされます。それ以外の場合は、結果の文字列にゼロが表示されます。 整数部の左端のゼロの位置と、小数部の右端のゼロの位置によって、常に結果の文字列に示される桁数が決まります。

指定子が "00" の場合、値は一の位で丸められ、小数点以下のゼロは常に切り捨てられます。 たとえば、"00" を指定して 34.5 を書式設定すると、結果の値は 35 になります。

次の例では、ゼロ プレースホルダーを含むカスタム書式指定文字列を使って書式設定された複数の値を表示します。

let
    Source =
    {
        Number.ToText(123, "00000", ""),
        // Displays 00123

        Number.ToText(1.2, "0.00", ""),
        // Displays 1.20

        Number.ToText(1.2, "00.00", ""),
        // Displays 01.20

        Number.ToText(1.2, "00.00", "da-DK"),
        // Displays 01,20

        Number.ToText(.56, "0.0", ""),
        // Displays 0.6

        Number.ToText(1234567890, "0,0", ""),
        // Displays 1,234,567,890

        Number.ToText(1234567890, "0,0", "el-GR"),
        // Displays 1.234.567.890

        Number.ToText(1234567890.123456, "0,0.0", ""),
        // Displays 1,234,567,890.1

        Number.ToText(1234.567890, "0,0.00", "")
        // Displays 1,234.57
    }
in
    Source

Note

前のサンプルの Number.ToText の最後のパラメーターの空白のテキスト値 ("") は、インバリアント カルチャを参照します。

表のトップへ

"#" カスタム指定子

"#" カスタム書式指定子は、桁プレースホルダー記号として機能します。 書式が指定される値で、書式指定文字列の "#" 記号に対応する位置に数字がある場合には、この数字が結果の文字列にコピーされます。 それ以外の場合は、結果の文字列のこの位置には何も格納されません。

この指定子は、0 が文字列内の唯一の数字である場合でも、有効な数字ではないゼロを表示しません。 表示されている数値の有効な数字である場合にのみ、0 が表示されます。

書式指定文字列が "##" の場合は、値は一の位で丸められ、小数点以下のゼロは常に切り捨てられます。 たとえば、"##" を指定して 34.5 を書式設定すると、結果の値は 35 になります。

次の例では、桁プレースホルダーを含むカスタム書式指定文字列を使って書式設定された複数の値を表示します。

let
    Source =
    {
        Number.ToText(1.2, "#.##", ""),
        // Displays 1.2

        Number.ToText(123, "#####"),
        // Displays 123

        Number.ToText(123456, "[##-##-##]"),
        // Displays [12-34-56]

        Number.ToText(1234567890, "#"),
        // Displays 1234567890

        Number.ToText(1234567890, "(###) ###-####")
        // Displays (123) 456-7890
    }
in
    Source

次の例に示すように、存在しない数字または先頭のゼロをスペースに置き換える結果文字列を返すには、Text.PadStart を使用し、フィールドの幅を指定します。

let
   Source = Text.Format("The value is: '#{0}'", {Text.PadStart(Number.ToText(.324, "#.###"), 5)})
in
   Source

// The example displays the following output if the current culture
// is en-US:
//      The value is: ' .324'

表のトップへ

"." カスタム指定子

"." カスタム書式指定子は、ローカライズされた小数点を結果の文字列に挿入します。 書式指定文字列の 1 番目のピリオドによって、書式設定後の値での小数点の位置が決定します。指定されている他のピリオドは無視されます。 書式指定子が "." で終わる場合、有効数字のみが結果文字列に書式設定されます。

結果文字列の小数点区切り記号として使用される文字は、常にピリオドであるとは限りません。これは、書式設定を制御するカルチャによって決まります。

次の例では、結果として得られるさまざまな文字列の小数点位置を、"." 書式指定子を使って定義しています。

let
    Source =
    {
        Number.ToText(1.2, "0.00", ""),
        // Displays 1.20

        Number.ToText(1.2, "00.00", ""),
        // Displays 01.20

        Number.ToText(1.2, "00.00", "da-DK"),
        // Displays 01,20

        Number.ToText(.086, "#0.##%", ""),
        // Displays 8.6%

        Number.ToText(Double.From(86000), "0.###E+0", "")
        // Displays 8.6E+4
    }
in
    Source

表のトップへ

"," カスタム指定子

"," 文字は、桁区切り記号および数値位取り指定子の両方として機能します。

  • 桁区切り記号: 数値の整数部の桁を書式設定する 2 つの桁プレースホルダー (0 または #) の間に 1 つ以上のコンマが指定されている場合は、出力の整数部分で各数値グループの間に桁区切り記号文字が挿入されます。

    カルチャによって、数値グループの区切り記号として使用される文字と、各数値グループのサイズが決まります。 たとえば、文字列 "#,#" およびインバリアント カルチャを使用して数値 1000 が書式設定される場合は、出力が "1,000" となります。

  • 数値位取り指定子: 明示的または暗黙的な小数点のすぐ左側に 1 つ以上のコンマが指定されている場合は、コンマごとに書式設定対象の数値が 1000 で除算されます。 たとえば、"0,," 文字列を使用して数値 1 億が書式設定された場合、出力は "100" となります。

桁区切り記号および数値位取り指定子は、同じ書式指定文字列で使用できます。 たとえば、"#,0,," 文字列およびインバリアント カルチャを使用して 10 億の数値を書式設定した場合、出力は "1,000" となります。

桁区切り記号としてコンマを使用する例を次に示します。

let
    Source =
    {
        Number.ToText(1234567890, "#,#", ""),
        // Displays 1,234,567,890

        Number.ToText(1234567890, "#,##0,,", "")
        // Displays, 1,235
    }
in
    Source

数値の位取り指定子としてコンマを使用する例を次に示します。

let
    Source =
    {
        Number.ToText(1234567890, "#,,", ""),
        // Displays 1235

        Number.ToText(1234567890, "#,,,", ""),
        // Displays 1

        Number.ToText(1234567890, "#,##0,,", "")
        // Displays 1,235
    }
in
    Source

表のトップへ

"%" カスタム指定子

書式指定文字列のパーセント記号 (%) を指定すると、書式設定前に数値に 100 が乗算されます。 数値では、書式指定文字列の % に対応する位置にローカライズされたパーセント記号が挿入されます。 使用されるパーセント文字は、カルチャによって定義されます。

次の例では、"%" カスタム指定子を含むカスタム書式指定文字列を定義します。

let
    Source = Number.ToText(.086, "#0.##%", "")
    // Displays 8.6%
in
    Source

表のトップへ

"‰" カスタム指定子

書式指定文字列内のミリ単位の文字 (‰ または \u2030) は、書式設定前に数値に 1000 を乗算します。 返される文字列では、書式指定文字列の ‰ に対応する位置に適切なパーミル記号が挿入されます。 使用されるミル単位の文字は、カルチャ固有の書式設定情報を提供するカルチャによって定義されます。

次の例では、"‰" カスタム指定子を含むカスタム書式指定文字列を定義します。

let
    Source = Number.ToText(.00354, "#0.##" & Character.FromNumber(0x2030), "")
    // Displays 3.54‰
in
    Source

表のトップへ

"E" カスタム指定子と "e" カスタム指定子

書式指定文字列に "E"、"E+"、"E-"、"e"、"e+"、または "e-" が含まれており、これらの文字の直後にゼロが 1 つ以上続く場合には、指数表記を使用して数値の書式が設定されます。また、数値と指数の間に "E" または "e" が挿入されます。 指数表記インジケーターの後に続くゼロの数によって、出力の指数部の最小桁数が決まります。 書式 "E+" または "e+" は、正符号または負符号が指数部の前に常に挿入されることを示します。 書式 "E"、"E-"、"e"、または "e-" は、指数部が負の値の場合にだけその前に符号文字が挿入されることを示します。

次の例では、指数表記の指定子を使用して、さまざまな数値の書式を設定します。

let
    Source =
    {
        Number.ToText(86000, "0.###E+0", ""),
        // Displays 8.6E+4

        Number.ToText(86000, "0.###E+000", ""),
        // Displays 8.6E+004

        Number.ToText(86000, "0.###E-000", "")
        // Displays 8.6E004
    }
in
    Source

表のトップへ

エスケープ文字

書式指定文字列内の "#"、"0"、"."、","、"%"、"‰" の各記号は、リテラル文字ではなく書式指定子として解釈されます。 カスタム書式指定文字列での位置に応じて、大文字と小文字の "E" と + 記号と - 記号を書式指定子として解釈することもできます。

文字が書式指定子として解釈されないようにするには、次の手順を実行します。

  • その前に円記号を付けます。
  • 単一引用符で囲みます。
  • 2 つの二重引用符で囲みます。

これらの文字はそれぞれエスケープ文字として機能します。 エスケープ文字は、その後に続く文字が、そのまま結果の文字列に含める必要がある文字リテラルであることを示します。

結果の文字列に円記号を含める場合は、円記号をもう 1 つ付加して、円記号自体をエスケープする必要があります (\\)。

結果文字列に単一引用符を含めるには、円記号 (\') でエスケープする必要があります。 エスケープされていない別の単一引用符がエスケープされた単一引用符の前にある場合は、代わりに円記号が表示されます ('\'\表示されます)。

結果文字列に二重引用符を含めるには、そのうちの 2 つを円記号 (\"") でエスケープする必要があります。

次の例では、エスケープ文字を使用して、書式設定操作で "#"、"0"、および "" 文字がエスケープ文字または書式指定子として解釈されないようにします。

let
    Source =
    {
        Number.ToText(123, "\#\#\# ##0 dollars and \0\0 cents \#\#\#"),
        // Displays ### 123 dollars and 00 cents ###

        Number.ToText(123, "'###' ##0 dollars and '00' cents '###'"),
        // Displays ### 123 dollars and 00 cents ###

        Number.ToText(123, """###"" ##0 dollars and ""00"" cents ""###"""),
        // Displays ### 123 dollars and 00 cents ###

        Number.ToText(123, "\\\\\\ ##0 dollars and \0\0 cents \\\\\\"),
        // Displays \\\ 123 dollars and 00 cents \\\

        Number.ToText(123, "'\\\' ##0 dollars and '00' cents '\\\'"),
        // Displays \\\ 123 dollars and 00 cents \\\

        Number.ToText(123, """\\\"" ##0 dollars and ""00"" cents ""\\\""")
        // Displays \\\ 123 dollars and 00 cents \\\
    }
in
    Source

表のトップへ

";" セクション区切り記号

セミコロン (;) は、値が正、負、ゼロのいずれであるかに応じて異なる書式設定を数値に適用する条件付き書式指定子です。 このように数値の内容によって適用する書式を変更するには、カスタム書式指定文字列に、セミコロンで区切ったセクションを最大 3 つまで作成します。 これらのセクションの説明を次に示します。

セクションの数 説明
1 つ 書式指定文字列はすべての値に適用されます。
2 つ 最初のセクションが正の値とゼロに適用され、2 番目のセクションが負の値に適用されます。

書式設定対象の数値が負の数値であるが、2 番目のセクションの書式指定に従って丸めた結果ゼロになる場合には、1 番目のセクションの書式に従ってこのゼロが書式設定されます。
3 つ 最初のセクションが正の値、2 番目のセクションが負の値、3 番目のセクションがゼロに適用されます。

ゼロ以外の値すべてに 1 番目のセクションが適用される場合には、2 番目のセクションが空になる (セミコロンの間に何も表示されない) ことがあります。

書式設定対象の数値がゼロ以外の負の数値であるが、1 番目または 2 番目のセクションの書式に従って丸めた結果ゼロになる場合には、3 番目のセクションの書式に従ってこのゼロが書式設定されます。

セクション区切り記号は、最後の値が書式設定されるときに、数値に関連付けられた既存の書式設定をすべて無視します。 たとえば、セクション区切り記号を使用する場合、負の値はマイナス記号を付けずに表示されます。 最終的に書式設定された値にマイナス記号を付ける場合は、カスタム書式指定子の中に明示的にマイナス記号を含める必要があります。

次の例では、";" 書式指定子を使用して、正数、負数、ゼロの各部分に対し、それぞれ異なる書式を設定します。

let
    Source =
    {
        Number.ToText(1234, "##;(##)"),
        // Displays 1234

        Number.ToText(-1234, "##;(##)"),
        // Displays (1234)

        Number.ToText(0, "##;(##);**Zero**")
        // Displays **Zero**
    }
in
    Source

表のトップへ

文字リテラル

カスタム数値書式指定文字列に含まれる書式指定子は、常に書式設定文字として解釈され、決してリテラル文字としては解釈されません。 これには以下の文字が含まれます。

その他の文字はすべて、文字リテラルとして常に解釈され、書式設定操作では、変更されずに結果の文字列に含まれます。 解析操作では、これらは入力文字列の文字と完全に一致している必要があります。比較では大文字小文字を区別します。

次の例は、リテラル文字の単位 (この場合は千単位) の一般的な使用例を示しています。

let
    Source = Number.ToText(123.8, "#,##0.0K")
    // Displays 123.8K
in
    Source

文字が結果の文字列に含まれるように、または入力文字列で正常に解析されるように、文字が書式指定文字としてではなく、リテラル文字として解釈されることを示すには、次の 2 つの方法があります。

  • 書式指定文字をエスケープします。 詳細については、「 Escape 文字」を参照してください。

  • リテラル文字列全体を引用符のアポストロフィで囲みます。

次の例では、両方のアプローチを使用して、カスタム数値書式指定文字列に予約文字を含めています。

let
    Source =
    {
        Number.ToText(9.3, "##.0\%"),
        // Displays 9.3%

        Number.ToText(9.3, "\'##\'"),
        // Displays '9'

        Number.ToText(9.3, "\\##\\"),
        // Displays \9\

        Number.ToText(9.3, "##.0'%'"),
        // Displays 9.3%

        Number.ToText(9.3, "'\'##'\'"),
        // Displays \9\

        Number.ToText(9.3, "##.0""%"""),
        // Displays 9.3%

        Number.ToText(9.3, "\""##\""")
        // Displays "9"
    }
in
    Source

メモ

浮動小数点の無限大値と NaN (非数) 値

書式指定文字列に関係なく、Decimal.TypeSingle.Type、または Double.Type 浮動小数点型の値が正の無限大、負の無限大、または数値 (NaN) でない場合、書式設定された文字列は、現在適用可能なカルチャで指定されているそれぞれの Number.PositiveInfinityNumber.NegativeInfinity、または Number.NaN 定数の値です。

丸めと固定小数点の書式指定文字列

固定小数点書式指定文字列 (つまり、指数表記書式指定文字を含まない書式指定文字列) の場合、数値は小数点の右側に数字のプレースホルダーがあるのと同じ数の小数点以下の桁数に丸められます。 書式指定文字列に小数点が含まれていない場合、数値は最も近い整数に丸められます。 数値の桁数が、整数部の桁プレースホルダーの数よりも大きい場合には、桁プレースホルダーに収まらない桁が、結果の文字列の 1 番目の桁プレースホルダーの直前にコピーされます。

表のトップへ

2 つのカスタム数値書式指定文字列の例を次に示します。 どちらの場合も、桁プレースホルダー (#) によって数値データが表示され、それ以外の文字はすべて結果の文字列にコピーされます。

let
    Source =
    {
        Number.ToText(1234567890, "(###) ###-####"),
        // Displays (123) 456-7890

        Number.ToText(42, "My Number = #")
        // Displays My number = 42
    }
in
    Source

表のトップへ