カスタム数値書式指定文字列Custom numeric format strings

1 つ以上のカスタム数値指定子で構成されるカスタム数値書式指定文字列を作成して、数値データの書式設定方法を定義できます。You can create a custom numeric format string, which consists of one or more custom numeric specifiers, to define how to format numeric data. カスタム数値書式指定文字列は、 標準の数値書式指定文字列ではない任意の書式指定文字列です。A custom numeric format string is any format string that is not a standard numeric format string.

カスタム数値書式指定文字列は、すべての数値型の ToString メソッドの一部のオーバーロードでサポートされています。Custom numeric format strings are supported by some overloads of the ToString method of all numeric types. たとえば、 ToString(String) 型の ToString(String, IFormatProvider) メソッドおよび Int32 メソッドに数値書式指定文字列を指定できます。For example, you can supply a numeric format string to the ToString(String) and ToString(String, IFormatProvider) methods of the Int32 type. カスタム数値書式指定文字列は、.NET の複合書式指定機能でもサポートされています。この機能を使用するメソッドには、Console クラスおよび StreamWriter クラスの一部の Write メソッドと WriteLine メソッド、String.Format メソッド、StringBuilder.AppendFormat メソッドがあります。Custom numeric format strings are also supported by the .NET composite formatting feature, which is used by some Write and WriteLine methods of the Console and StreamWriter classes, the String.Format method, and the StringBuilder.AppendFormat method. 文字列補間機能は、カスタム数値書式指定文字列もサポートしています。String interpolation feature also supports custom numeric format strings.

ヒント

書式指定ユーティリティをダウンロードできます。このアプリケーションを使用すると、書式指定文字列を数値または日付と時刻の値に適用して、結果の文字列を表示できます。You can download the Formatting Utility, an application that enables you to apply format strings to either numeric or date and time values and displays the result string.

次の表に、カスタム数値書式指定子の説明および書式指定子ごとのサンプル出力を示します。The following table describes the custom numeric format specifiers and displays sample output produced by each format specifier. カスタム数値書式指定文字列の使用方法については、「 メモ 」を参照してください。それらを使用する包括的な例については、「 」を参照してください。See the Notes section for additional information about using custom numeric format strings, and the Example section for a comprehensive illustration of their use.

書式指定子Format specifier nameName 説明Description 使用例Examples
"0""0" ゼロ プレースホルダーZero placeholder 対応する数字でゼロを置き換えます。置き換えが行われるのは、対応する数字が存在する場合です。それ以外の場合は、結果の文字列にはゼロが表示されます。Replaces the zero with the corresponding digit if one is present; otherwise, zero appears in the result string.

詳細については、「 "0" カスタム指定子」を参照してください。More information: The "0" Custom Specifier.
1234.5678 ("00000") -> 012351234.5678 ("00000") -> 01235

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

0.45678 ("0.00", fr-FR) -> 0,460.45678 ("0.00", fr-FR) -> 0,46
"#""#" 桁プレースホルダーDigit placeholder 対応する数字で "#" 記号を置き換えます。置き換えが行われるのは、対応する数字が存在する場合です。それ以外の場合は、結果の文字列に数字は表示されません。Replaces the "#" symbol with the corresponding digit if one is present; otherwise, no digit appears in the result string.

入力文字列の対応する数字が意味を持たない 0 の場合、結果の文字列に数字は表示されません。Note that no digit appears in the result string if the corresponding digit in the input string is a non-significant 0. たとえば、0003 ("####") -> 3 です。For example, 0003 ("####") -> 3.

詳細については、「 "#" カスタム指定子」を参照してください。More information: The "#" Custom Specifier.
1234.5678 ("#####") -> 12351234.5678 ("#####") -> 1235

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

0.45678 ("#.##", fr-FR) -> ,460.45678 ("#.##", fr-FR) -> ,46
".""." 小数点Decimal point 結果の文字列の小数点位置を決定します。Determines the location of the decimal separator in the result string.

詳細については、「"." カスタム指定子」を参照してください。More information: The "." Custom Specifier.
0.45678 ("0.00", en-US) -> 0.460.45678 ("0.00", en-US) -> 0.46

0.45678 ("0.00", fr-FR) -> 0,460.45678 ("0.00", fr-FR) -> 0,46
",""," 桁区切り記号および数値の位取りGroup separator and number scaling 桁区切り記号および数値位取り指定子の両方として機能します。Serves as both a group separator and a number scaling specifier. 桁区切り記号としては、各グループの間に、ローカライズされた桁区切り記号文字を挿入します。As a group separator, it inserts a localized group separator character between each group. 数値位取り指定子としては、指定されたコンマごとに、数値を 1000 で除算します。As a number scaling specifier, it divides a number by 1000 for each comma specified.

詳細については、「 "," カスタム指定子」を参照してください。More information: The "," Custom Specifier.
桁区切り記号:Group separator specifier:

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

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

位取り指定子:Scaling specifier:

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

2147483647 ("#,#,,", es-ES) -> 2.1472147483647 ("#,#,,", es-ES) -> 2.147
"%""%" パーセント プレースホルダーPercentage placeholder 数値に 100 を乗算し、結果の文字列に、ローカライズされたパーセント記号を挿入します。Multiplies a number by 100 and inserts a localized percentage symbol in the result string.

詳細については、「 "%" カスタム指定子」を参照してください。More information: The "%" Custom Specifier.
0.3697 ("%#0.00", en-US) -> %36.970.3697 ("%#0.00", en-US) -> %36.97

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

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

0.3697 ("##.0 %", el-GR) -> 37,0 %0.3697 ("##.0 %", el-GR) -> 37,0 %
"‰""‰" パーミル プレースホルダーPer mille placeholder 数値に 1000 を乗算し、結果の文字列にローカライズされたパーミル記号を挿入します。Multiplies a number by 1000 and inserts a localized per mille symbol in the result string.

詳細については、「 "‰" カスタム指定子」を参照してください。More information: The "‰" Custom Specifier.
0.03697 ("#0.00‰", en-US) -> 36.97‰0.03697 ("#0.00‰", en-US) -> 36.97‰

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

"E+0""E+0"

"E-0""E-0"

"E0""e0"

"E+0""e+0"

"E-0""e-0"
指数表記Exponential notation 後に 0 (ゼロ) が 1 つ以上続く場合に、指数表記を使用して結果の書式を設定します。If followed by at least one 0 (zero), formats the result using exponential notation. 大文字 "E" と小文字 "e" は、結果の文字列の指数記号を大文字にするか小文字にするかを示します。The case of "E" or "e" indicates the case of the exponent symbol in the result string. "E" 文字または "e" 文字の後に続くゼロの数によって、指数部の最小桁数が決まります。The number of zeros following the "E" or "e" character determines the minimum number of digits in the exponent. 正符号 (+) は、符号文字が指数部の前に常に挿入されることを示します。A plus sign (+) indicates that a sign character always precedes the exponent. 負符号 (-) は、指数部が負の値の場合にだけその前に符号文字が挿入されることを示します。A minus sign (-) indicates that a sign character precedes only negative exponents.

詳細については、「 "E" カスタム指定子と "e" カスタム指定子」を参照してください。More information: The "E" and "e" Custom Specifiers.
987654 ("#0.0e0") -> 98.8e4987654 ("#0.0e0") -> 98.8e4

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

1.8901385E-16 ("0.0e+00") -> 1.9e-161.8901385E-16 ("0.0e+00") -> 1.9e-16
"\""\" エスケープ文字Escape character この文字の次の文字はカスタム書式指定子ではなくリテラルとして解釈されます。Causes the next character to be interpreted as a literal rather than as a custom format specifier.

詳細については、「"\" エスケープ文字」を参照してください。More information: The "\" Escape Character.
987654 ("\###00\#") -> #987654#987654 ("\###00\#") -> #987654#
'文字列''string'

"文字列""string"
リテラル文字列区切り記号Literal string delimiter 囲まれた文字列が結果の文字列にそのままコピーされることを示します。Indicates that the enclosed characters should be copied to the result string unchanged.

詳細については、「文字リテラル」を参照してください。More information: Character literals.
68 ("#' degrees'") -> 68 degrees68 ("# ' degrees'") -> 68 degrees

68 ("#' degrees'") -> 68 degrees68 ("#' degrees'") -> 68 degrees
;; セクション区切り記号Section separator 正の数値、負の数値、およびゼロの数値に対して、別々の書式指定文字列を使用してセクションを定義します。Defines sections with separate format strings for positive, negative, and zero numbers.

詳細については、「 ";" セクション区切り記号」を参照してください。More information: The ";" Section Separator.
12.345 ("#0.0#;(#0.0#);-\0-") -> 12.3512.345 ("#0.0#;(#0.0#);-\0-") -> 12.35

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

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

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

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

-12.345 ("#0.0#;(#0.0#)") -> (12.35)-12.345 ("#0.0#;(#0.0#)") -> (12.35)
その他Other 上記以外のすべての文字All other characters 文字が結果の文字列にそのままコピーされます。The character is copied to the result string unchanged.

詳細については、「文字リテラル」を参照してください。More information: Character literals.
68 ("# °") -> 68 °68 ("# °") -> 68 °

以降では、それぞれのカスタム数値書式指定子について詳しく説明します。The following sections provide detailed information about each of the custom numeric format specifiers.

注意

The C# examples in this article run in the Try.NET inline code runner and playground. Select the Run button to run an example in an interactive window. Once you execute the code, you can modify it and run the modified code by selecting Run again. The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

The current culture of the Try.NET inline code runner and playground is the invariant culture. As a result, the output produced by the inline code runner differs from the output displayed by examples that use a default culture as the current culture.

You can work around this limitation by adding a line of code like the following to set the culture: System.Globalization.CultureInfo.CurrentCulture = new System.Globalization.CultureInfo("en-US"); Just replace en-US with the name of the culture that you'd like to be the current culture.

"0" カスタム指定子The "0" custom specifier

"0" カスタム書式指定子は、ゼロ プレースホルダー記号として機能します。The "0" custom format specifier serves as a zero-placeholder symbol. 書式が設定される値で、書式指定文字列のゼロに対応する位置に数字がある場合には、この数字が結果の文字列にコピーされます。それ以外の場合は、結果の文字列にゼロが表示されます。If the value that is being formatted has a digit in the position where the zero appears in the format string, that digit is copied to the result string; otherwise, a zero appears in the result string. 整数部の左端のゼロの位置と、小数部の右端のゼロの位置によって、常に結果の文字列に示される桁数が決まります。The position of the leftmost zero before the decimal point and the rightmost zero after the decimal point determines the range of digits that are always present in the result string.

指定子が "00" の場合、値は一の位で丸められ、小数点以下のゼロは常に切り捨てられます。The "00" specifier causes the value to be rounded to the nearest digit preceding the decimal, where rounding away from zero is always used. たとえば、"00" を指定して 34.5 を書式設定すると、結果の値は 35 になります。For example, formatting 34.5 with "00" would result in the value 35.

次の例では、ゼロ プレースホルダーを含むカスタム書式指定文字列を使って書式設定された複数の値を表示します。The following example displays several values that are formatted by using custom format strings that include zero placeholders.

double value;

value = 123;
Console::WriteLine(value.ToString("00000"));
Console::WriteLine(String::Format("{0:00000}", value));
// Displays 00123

value = 1.2;
Console::WriteLine(value.ToString("0.00", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                  "{0:0.00}", value));
// Displays 1.20

Console::WriteLine(value.ToString("00.00", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:00.00}", value));
// Displays 01.20

CultureInfo^ daDK = CultureInfo::CreateSpecificCulture("da-DK");
Console::WriteLine(value.ToString("00.00", daDK)); 
Console::WriteLine(String::Format(daDK, "{0:00.00}", value));
// Displays 01,20

value = .56;
Console::WriteLine(value.ToString("0.0", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0.0}", value));
// Displays 0.6

value = 1234567890;
Console::WriteLine(value.ToString("0,0", CultureInfo::InvariantCulture));	
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0,0}", value));	
// Displays 1,234,567,890      

CultureInfo^ elGR = CultureInfo::CreateSpecificCulture("el-GR");
Console::WriteLine(value.ToString("0,0", elGR));	
Console::WriteLine(String::Format(elGR, "{0:0,0}", value));	
// Displays 1.234.567.890

value = 1234567890.123456;
Console::WriteLine(value.ToString("0,0.0", CultureInfo::InvariantCulture));	
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0,0.0}", value));	
// Displays 1,234,567,890.1  

value = 1234.567890;
Console::WriteLine(value.ToString("0,0.00", CultureInfo::InvariantCulture));	
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0,0.00}", value));	
// Displays 1,234.57 
 double value;
 
 value = 123;
 Console.WriteLine(value.ToString("00000"));
 Console.WriteLine(String.Format("{0:00000}", value));
 // Displays 00123
 
 value = 1.2;
 Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                   "{0:0.00}", value));
 // Displays 1.20

 Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                 "{0:00.00}", value));
 // Displays 01.20

 CultureInfo daDK = CultureInfo.CreateSpecificCulture("da-DK");
 Console.WriteLine(value.ToString("00.00", daDK)); 
 Console.WriteLine(String.Format(daDK, "{0:00.00}", value));
 // Displays 01,20
 
 value = .56;
 Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture));
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                 "{0:0.0}", value));
 // Displays 0.6

 value = 1234567890;
 Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture));	
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                 "{0:0,0}", value));	
 // Displays 1,234,567,890      
 
 CultureInfo elGR = CultureInfo.CreateSpecificCulture("el-GR");
 Console.WriteLine(value.ToString("0,0", elGR));	
Console.WriteLine(String.Format(elGR, "{0:0,0}", value));	
 // Displays 1.234.567.890
 
 value = 1234567890.123456;
 Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture));	
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                 "{0:0,0.0}", value));	
 // Displays 1,234,567,890.1  
 
 value = 1234.567890;
 Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture));	
 Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                 "{0:0,0.00}", value));	
 // Displays 1,234.57 
Dim value As Double

value = 123
Console.WriteLine(value.ToString("00000"))
Console.WriteLine(String.Format("{0:00000}", value))
' Displays 00123

value = 1.2
Console.Writeline(value.ToString("0.00", CultureInfo.InvariantCulture))
Console.Writeline(String.Format(CultureInfo.InvariantCulture, 
                  "{0:0.00}", value))
' Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:00.00}", value))
' Displays 01.20
Dim daDK As CultureInfo = CultureInfo.CreateSpecificCulture("da-DK")
Console.WriteLine(value.ToString("00.00", daDK))
Console.WriteLine(String.Format(daDK, "{0:00.00}", value))
' Displays 01,20

value = .56
Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0.0}", value))
' Displays 0.6

value = 1234567890
Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture))	
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0,0}", value))	
' Displays 1,234,567,890      
Dim elGR As CultureInfo = CultureInfo.CreateSpecificCulture("el-GR")
Console.WriteLine(value.ToString("0,0", elGR))
Console.WriteLine(String.Format(elGR, "{0:0,0}", value))	
' Displays 1.234.567.890

value = 1234567890.123456
Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture))	
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0,0.0}", value))	
' Displays 1,234,567,890.1  

value = 1234.567890
Console.WriteLine(value.ToString("0,0.00", CultureInfo.InvariantCulture))	
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0,0.00}", value))	
' Displays 1,234.57 

表のトップへBack to table

"#" カスタム指定子The "#" custom specifier

"#" カスタム書式指定子は、桁プレースホルダー記号として機能します。The "#" custom format specifier serves as a digit-placeholder symbol. 書式が指定される値で、書式指定文字列の "#" 記号に対応する位置に数字がある場合には、この数字が結果の文字列にコピーされます。If the value that is being formatted has a digit in the position where the "#" symbol appears in the format string, that digit is copied to the result string. それ以外の場合は、結果の文字列のこの位置には何も格納されません。Otherwise, nothing is stored in that position in the result string.

この指定子では、文字列の唯一の桁の値がゼロであっても、この桁が有効桁でない場合には、ゼロは表示されません。Note that this specifier never displays a zero that is not a significant digit, even if zero is the only digit in the string. 表示される数値の有効桁である場合にのみゼロが表示されます。It will display zero only if it is a significant digit in the number that is being displayed.

書式指定文字列が "##" の場合は、値は一の位で丸められ、小数点以下のゼロは常に切り捨てられます。The "##" format string causes the value to be rounded to the nearest digit preceding the decimal, where rounding away from zero is always used. たとえば、"##" を指定して 34.5 を書式設定すると、結果の値は 35 になります。For example, formatting 34.5 with "##" would result in the value 35.

次の例では、桁プレースホルダーを含むカスタム書式指定文字列を使って書式設定された複数の値を表示します。The following example displays several values that are formatted by using custom format strings that include digit placeholders.

 double value;
 
 value = 1.2;
 Console::WriteLine(value.ToString("#.##", CultureInfo::InvariantCulture));
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                 "{0:#.##}", value));
 // Displays 1.2
 
 value = 123;
 Console::WriteLine(value.ToString("#####"));
 Console::WriteLine(String::Format("{0:#####}", value));
 // Displays 123

 value = 123456;
 Console::WriteLine(value.ToString("[##-##-##]"));      
 Console::WriteLine(String::Format("{0:[##-##-##]}", value));      
// Displays [12-34-56]

 value = 1234567890;
 Console::WriteLine(value.ToString("#"));
 Console::WriteLine(String::Format("{0:#}", value));
 // Displays 1234567890
 
 Console::WriteLine(value.ToString("(###) ###-####"));
 Console::WriteLine(String::Format("{0:(###) ###-####}", value));
 // Displays (123) 456-7890
  double value;
  
  value = 1.2;
  Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture));
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:#.##}", value));
  // Displays 1.2
  
  value = 123;
  Console.WriteLine(value.ToString("#####"));
  Console.WriteLine(String.Format("{0:#####}", value));
  // Displays 123

  value = 123456;
  Console.WriteLine(value.ToString("[##-##-##]"));      
  Console.WriteLine(String.Format("{0:[##-##-##]}", value));      
// Displays [12-34-56]

  value = 1234567890;
  Console.WriteLine(value.ToString("#"));
  Console.WriteLine(String.Format("{0:#}", value));
  // Displays 1234567890
  
  Console.WriteLine(value.ToString("(###) ###-####"));
  Console.WriteLine(String.Format("{0:(###) ###-####}", value));
  // Displays (123) 456-7890
  Dim value As Double
  
  value = 1.2
  Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture))
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:#.##}", value))
  ' Displays 1.2
  
  value = 123
  Console.WriteLine(value.ToString("#####"))
  Console.WriteLine(String.Format("{0:#####}", value))
  ' Displays 123

  value = 123456
  Console.WriteLine(value.ToString("[##-##-##]"))      
  Console.WriteLine(String.Format("{0:[##-##-##]}", value))      
' Displays [12-34-56]

  value = 1234567890
  Console.WriteLine(value.ToString("#"))
  Console.WriteLine(String.Format("{0:#}", value))
  ' Displays 1234567890

  Console.WriteLine(value.ToString("(###) ###-####"))
  Console.WriteLine(String.Format("{0:(###) ###-####}", value))
  ' Displays (123) 456-7890

欠落している数字や先頭のゼロをスペースに置き換える結果の文字列を戻すには、次の例に示すように、 複合書式指定機能 を使用して、フィールド幅を指定します。To return a result string in which absent digits or leading zeroes are replaced by spaces, use the composite formatting feature and specify a field width, as the following example illustrates.

using namespace System;

void main()
{
    Double value = .324;
    Console::WriteLine("The value is: '{0,5:#.###}'", value);
}
// The example displays the following output if the current culture
// is en-US:
//      The value is: ' .324'
using System;

public class Example
{
   public static void Main()
   {
      Double value = .324;
      Console.WriteLine("The value is: '{0,5:#.###}'", value);
   }
}
// The example displays the following output if the current culture
// is en-US:
//      The value is: ' .324'
Module Example
   Public Sub Main()
      Dim value As Double = .324
      Console.WriteLine("The value is: '{0,5:#.###}'", value)
   End Sub
End Module
' The example displays the following output if the current culture
' is en-US:
'      The value is: ' .324'

表のトップへBack to table

"." カスタム指定子The "." custom specifier

"." カスタム書式指定子は、ローカライズされた小数点を結果の文字列に挿入します。The "." custom format specifier inserts a localized decimal separator into the result string. 書式指定文字列の 1 番目のピリオドによって、書式設定後の値での小数点の位置が決定します。指定されている他のピリオドは無視されます。The first period in the format string determines the location of the decimal separator in the formatted value; any additional periods are ignored.

結果の文字列の中で小数点として使用される文字は、ピリオドであるとは限りません。書式設定を制御する NumberDecimalSeparator オブジェクトの NumberFormatInfo プロパティによって決定されます。The character that is used as the decimal separator in the result string is not always a period; it is determined by the NumberDecimalSeparator property of the NumberFormatInfo object that controls formatting.

次の例では、結果として得られるさまざまな文字列の小数点位置を、"." 書式指定子を使って定義しています。The following example uses the "." format specifier to define the location of the decimal point in several result strings.

 double value;
 
 value = 1.2;
 Console::WriteLine(value.ToString("0.00", CultureInfo::InvariantCulture));
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                 "{0:0.00}", value));
 // Displays 1.20

 Console::WriteLine(value.ToString("00.00", CultureInfo::InvariantCulture));
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                 "{0:00.00}", value));
 // Displays 01.20

 Console::WriteLine(value.ToString("00.00", 
                   CultureInfo::CreateSpecificCulture("da-DK")));
 Console::WriteLine(String::Format(CultureInfo::CreateSpecificCulture("da-DK"),
                   "{0:00.00}", value));
 // Displays 01,20

 value = .086;
 Console::WriteLine(value.ToString("#0.##%", CultureInfo::InvariantCulture)); 
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                 "{0:#0.##%}", value)); 
 // Displays 8.6%
  
 value = 86000;
 Console::WriteLine(value.ToString("0.###E+0", CultureInfo::InvariantCulture));
 Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                   "{0:0.###E+0}", value));
// Displays 8.6E+4
  double value;
  
  value = 1.2;
  Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:0.00}", value));
  // Displays 1.20

  Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:00.00}", value));
  // Displays 01.20

  Console.WriteLine(value.ToString("00.00", 
                    CultureInfo.CreateSpecificCulture("da-DK")));
  Console.WriteLine(String.Format(CultureInfo.CreateSpecificCulture("da-DK"),
                    "{0:00.00}", value));
  // Displays 01,20

  value = .086;
  Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture)); 
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:#0.##%}", value)); 
  // Displays 8.6%
   
  value = 86000;
  Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                    "{0:0.###E+0}", value));
// Displays 8.6E+4
  Dim value As Double
  
  value = 1.2
  Console.Writeline(value.ToString("0.00", CultureInfo.InvariantCulture))
  Console.Writeline(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:0.00}", value))
  ' Displays 1.20
  
  Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture))
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:00.00}", value))
  ' Displays 01.20

  Console.WriteLine(value.ToString("00.00", _
                    CultureInfo.CreateSpecificCulture("da-DK")))
  Console.WriteLine(String.Format(CultureInfo.CreateSpecificCulture("da-DK"),
                    "{0:00.00}", value))
  ' Displays 01,20

  value = .086
  Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture)) 
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:#0.##%}", value)) 
  ' Displays 8.6%
   
  value = 86000
  Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture))
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                    "{0:0.###E+0}", value))
' Displays 8.6E+4

表のトップへBack to table

"," カスタム指定子The "," custom specifier

"," 文字は、桁区切り記号および数値位取り指定子の両方として機能します。The "," character serves as both a group separator and a number scaling specifier.

  • 桁区切り記号: 数値の整数部の桁を書式設定する 2 つの桁プレースホルダー (0 または #) の間に 1 つ以上のコンマが指定されている場合は、出力の整数部分で各数値グループの間に桁区切り記号文字が挿入されます。Group separator: If one or more commas are specified between two digit placeholders (0 or #) that format the integral digits of a number, a group separator character is inserted between each number group in the integral part of the output.

    現在の NumberGroupSeparator オブジェクトの NumberGroupSizes プロパティと NumberFormatInfo プロパティによって、桁区切り記号として使用される文字および各数値グループのサイズが決まります。The NumberGroupSeparator and NumberGroupSizes properties of the current NumberFormatInfo object determine the character used as the number group separator and the size of each number group. たとえば、文字列 "#,#" およびインバリアント カルチャを使用して数値 1000 が書式設定される場合は、出力が "1,000" となります。For example, if the string "#,#" and the invariant culture are used to format the number 1000, the output is "1,000".

  • 数値位取り指定子: 明示的または暗黙的な小数点のすぐ左側に 1 つ以上のコンマが指定されている場合は、コンマごとに書式設定対象の数値が 1000 で除算されます。Number scaling specifier: If one or more commas are specified immediately to the left of the explicit or implicit decimal point, the number to be formatted is divided by 1000 for each comma. たとえば、"0,," 文字列を使用して数値 1 億が書式設定された場合、出力は "100" となります。For example, if the string "0,," is used to format the number 100 million, the output is "100".

桁区切り記号および数値位取り指定子は、同じ書式指定文字列で使用できます。You can use group separator and number scaling specifiers in the same format string. たとえば、"#,0,," 文字列およびインバリアント カルチャを使用して 10 億の数値を書式設定した場合、出力は "1,000" となります。For example, if the string "#,0,," and the invariant culture are used to format the number one billion, the output is "1,000".

桁区切り記号としてコンマを使用する例を次に示します。The following example illustrates the use of the comma as a group separator.

double value = 1234567890;
Console::WriteLine(value.ToString("#,#", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:#,#}", value));
// Displays 1,234,567,890      

Console::WriteLine(value.ToString("#,##0,,", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:#,##0,,}", value));
// Displays 1,235      	
double value = 1234567890;
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:#,#}", value));
// Displays 1,234,567,890      

Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:#,##0,,}", value));
// Displays 1,235      	
Dim value As Double = 1234567890
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:#,#}", value))
' Displays 1,234,567,890      

Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:#,##0,,}", value))
' Displays 1,235      	

数値の位取り指定子としてコンマを使用する例を次に示します。The following example illustrates the use of the comma as a specifier for number scaling.

  double value = 1234567890;
  Console::WriteLine(value.ToString("#,,", CultureInfo::InvariantCulture));	
  Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                  "{0:#,,}", value));	
  // Displays 1235   
  
  Console::WriteLine(value.ToString("#,,,", CultureInfo::InvariantCulture));
  Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                  "{0:#,,,}", value));
// Displays 1  
  
  Console::WriteLine(value.ToString("#,##0,,", CultureInfo::InvariantCulture));       
  Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                  "{0:#,##0,,}", value));       
// Displays 1,235
   double value = 1234567890;
   Console.WriteLine(value.ToString("#,,", CultureInfo.InvariantCulture));	
   Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                   "{0:#,,}", value));	
   // Displays 1235   
   
   Console.WriteLine(value.ToString("#,,,", CultureInfo.InvariantCulture));
   Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                   "{0:#,,,}", value));
// Displays 1  
   
   Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));       
   Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                   "{0:#,##0,,}", value));       
// Displays 1,235
  Dim value As Double = 1234567890
  Console.WriteLine(value.ToString("#,,", CultureInfo.InvariantCulture))	
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, "{0:#,,}", value))	
  ' Displays 1235   

  Console.WriteLine(value.ToString("#,,,", CultureInfo.InvariantCulture))
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:#,,,}", value))
' Displays 1  

  Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture))       
  Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                  "{0:#,##0,,}", value))       
' Displays 1,235

表のトップへBack to table

"%" カスタム指定子The "%" custom specifier

書式指定文字列にパーセント記号 (%) があると、書式設定前に数値に 100 が乗算されます。A percent sign (%) in a format string causes a number to be multiplied by 100 before it is formatted. 数値では、書式指定文字列の % に対応する位置にローカライズされたパーセント記号が挿入されます。The localized percent symbol is inserted in the number at the location where the % appears in the format string. 使用されるパーセント記号は、現在の PercentSymbol オブジェクトの NumberFormatInfo プロパティによって定義されます。The percent character used is defined by the PercentSymbol property of the current NumberFormatInfo object.

次の例では、"%" カスタム指定子を含むさまざまなカスタム書式指定文字列を定義します。The following example defines several custom format strings that include the "%" custom specifier.

double value = .086;
Console::WriteLine(value.ToString("#0.##%", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:#0.##%}", value));
// Displays 8.6%      
double value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:#0.##%}", value));
// Displays 8.6%      
Dim value As Double = .086
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:#0.##%}", value))
' Displays 8.6%      

表のトップへBack to table

"‰" カスタム指定子The "‰" custom specifier

書式指定文字列にパーミル文字 (‰ または \u2030) があると、書式設定前に数値に 1000 が乗算されます。A per mille character (‰ or \u2030) in a format string causes a number to be multiplied by 1000 before it is formatted. 返される文字列では、書式指定文字列の ‰ に対応する位置に適切なパーミル記号が挿入されます。The appropriate per mille symbol is inserted in the returned string at the location where the ‰ symbol appears in the format string. 使用されるパーミル文字は、カルチャ固有の書式設定情報を指定するオブジェクトの NumberFormatInfo.PerMilleSymbol プロパティによって定義されます。The per mille character used is defined by the NumberFormatInfo.PerMilleSymbol property of the object that provides culture-specific formatting information.

次の例では、"‰" カスタム指定子を含むカスタム書式指定文字列を定義します。The following example defines a custom format string that includes the "‰" custom specifier.

double value = .00354;
String^ perMilleFmt = "#0.## " + '\u2030';
Console::WriteLine(value.ToString(perMilleFmt, CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:" + perMilleFmt + "}", value));
// Displays 3.54‰      
double value = .00354;
string perMilleFmt = "#0.## " + '\u2030';
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:" + perMilleFmt + "}", value));
// Displays 3.54‰      
Dim value As Double = .00354
Dim perMilleFmt As String = "#0.## " & ChrW(&h2030)
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:" + perMilleFmt + "}", value))
' Displays 3.54 ‰      

表のトップへBack to table

"E" カスタム指定子と "e" カスタム指定子The "E" and "e" custom specifiers

書式指定文字列に "E"、"E+"、"E-"、"e"、"e+"、または "e-" が含まれており、これらの文字の直後にゼロが 1 つ以上続く場合には、指数表記を使用して数値の書式が設定されます。また、数値と指数の間に "E" または "e" が挿入されます。If any of the strings "E", "E+", "E-", "e", "e+", or "e-" are present in the format string and are followed immediately by at least one zero, the number is formatted by using scientific notation with an "E" or "e" inserted between the number and the exponent. 指数表記インジケーターの後に続くゼロの数によって、出力の指数部の最小桁数が決まります。The number of zeros following the scientific notation indicator determines the minimum number of digits to output for the exponent. 書式 "E+" または "e+" は、正符号または負符号が指数部の前に常に挿入されることを示します。The "E+" and "e+" formats indicate that a plus sign or minus sign should always precede the exponent. 書式 "E"、"E-"、"e"、または "e-" は、指数部が負の値の場合にだけその前に符号文字が挿入されることを示します。The "E", "E-", "e", or "e-" formats indicate that a sign character should precede only negative exponents.

次の例では、指数表記の指定子を使用して、さまざまな数値の書式を設定します。The following example formats several numeric values using the specifiers for scientific notation.

double value = 86000;
Console::WriteLine(value.ToString("0.###E+0", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0.###E+0}", value));
// Displays 8.6E+4

Console::WriteLine(value.ToString("0.###E+000", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0.###E+000}", value));
// Displays 8.6E+004

Console::WriteLine(value.ToString("0.###E-000", CultureInfo::InvariantCulture));
Console::WriteLine(String::Format(CultureInfo::InvariantCulture, 
                                "{0:0.###E-000}", value));
// Displays 8.6E004
double value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0.###E+0}", value));
// Displays 8.6E+4

Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0.###E+000}", value));
// Displays 8.6E+004

Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0.###E-000}", value));
// Displays 8.6E004
Dim value As Double = 86000
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0.###E+0}", value))
' Displays 8.6E+4

Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0.###E+000}", value))
' Displays 8.6E+004

Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture))
Console.WriteLine(String.Format(CultureInfo.InvariantCulture, 
                                "{0:0.###E-000}", value))
' Displays 8.6E004

表のトップへBack to table

"\" エスケープ文字The "\" escape character

書式指定文字列内の "#"、"0"、"."、","、"%"、"‰" の各記号は、リテラル文字ではなく書式指定子として解釈されます。The "#", "0", ".", ",", "%", and "‰" symbols in a format string are interpreted as format specifiers rather than as literal characters. カスタム書式指定文字列内での位置によっては、大文字および小文字の "E"、および + 記号と - 記号も書式指定子として解釈されます。Depending on their position in a custom format string, the uppercase and lowercase "E" as well as the + and - symbols may also be interpreted as format specifiers.

文字が書式指定子として解釈されないようにするには、その文字の前に、エスケープ文字の円記号を付けます。To prevent a character from being interpreted as a format specifier, you can precede it with a backslash, which is the escape character. エスケープ文字は、その後に続く文字が、そのまま結果の文字列に含める必要がある文字リテラルであることを示します。The escape character signifies that the following character is a character literal that should be included in the result string unchanged.

結果の文字列に円記号を含める場合は、円記号をもう 1 つ付加して、円記号自体をエスケープする必要があります (\\)。To include a backslash in a result string, you must escape it with another backslash (\\).

注意

C++ コンパイラや C# コンパイラなど、一部のコンパイラでは、同様に、1 つの円記号がエスケープ文字として解釈されることがあります。Some compilers, such as the C++ and C# compilers, may also interpret a single backslash character as an escape character. 書式設定時に文字列が正しく解釈されるようにするには、C# では、逐語的文字列リテラル文字 (@ 文字) を文字列の前に使用します。また、C# および C++ では、円記号の前にもう 1 つ円記号を付ける方法もあります。To ensure that a string is interpreted correctly when formatting, you can use the verbatim string literal character (the @ character) before the string in C#, or add another backslash character before each backslash in C# and C++. 両方の方法を次の C# の例に示します。The following C# example illustrates both approaches.

次の例では、エスケープ文字を使用して、書式設定操作で "#"、"0"、"\" の各文字がエスケープ文字としても書式指定子としても解釈されないようにします。The following example uses the escape character to prevent the formatting operation from interpreting the "#", "0", and "\" characters as either escape characters or format specifiers. この C# の例では、円記号をもう 1 つ付けて、円記号がリテラル文字として解釈されるようにしています。The C# examples uses an additional backslash to ensure that a backslash is interpreted as a literal character.

int value = 123;
Console::WriteLine(value.ToString("\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#"));
Console::WriteLine(String::Format("{0:\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#}",
                                  value));
// Displays ### 123 dollars and 00 cents ###

Console::WriteLine(value.ToString("\\#\\#\\# ##0 dollars and \0\0 cents \\#\\#\\#"));
Console::WriteLine(String::Format("{0:\\#\\#\\# ##0 dollars and \0\0 cents \\#\\#\\#}",
                                value));
// Displays ### 123 dollars and 00 cents ###

Console::WriteLine(value.ToString("\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\"));
Console::WriteLine(String::Format("{0:\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\}",
                                value));
// Displays \\\ 123 dollars and 00 cents \\\

Console::WriteLine(value.ToString("\\\\\\ ##0 dollars and \0\0 cents \\\\\\"));
Console::WriteLine(String::Format("{0:\\\\\\ ##0 dollars and \0\0 cents \\\\\\}",
                                value));
// Displays \\\ 123 dollars and 00 cents \\\
int value = 123;
Console.WriteLine(value.ToString("\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#"));
Console.WriteLine(String.Format("{0:\\#\\#\\# ##0 dollars and \\0\\0 cents \\#\\#\\#}",
                                value));
// Displays ### 123 dollars and 00 cents ###

Console.WriteLine(value.ToString(@"\#\#\# ##0 dollars and \0\0 cents \#\#\#"));
Console.WriteLine(String.Format(@"{0:\#\#\# ##0 dollars and \0\0 cents \#\#\#}",
                                value));
// Displays ### 123 dollars and 00 cents ###

Console.WriteLine(value.ToString("\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\"));
Console.WriteLine(String.Format("{0:\\\\\\\\\\\\ ##0 dollars and \\0\\0 cents \\\\\\\\\\\\}",
                                value));
// Displays \\\ 123 dollars and 00 cents \\\

Console.WriteLine(value.ToString(@"\\\\\\ ##0 dollars and \0\0 cents \\\\\\"));
Console.WriteLine(String.Format(@"{0:\\\\\\ ##0 dollars and \0\0 cents \\\\\\}",
                                value));
// Displays \\\ 123 dollars and 00 cents \\\
Dim value As Integer = 123
Console.WriteLine(value.ToString("\#\#\# ##0 dollars and \0\0 cents \#\#\#"))
Console.WriteLine(String.Format("{0:\#\#\# ##0 dollars and \0\0 cents \#\#\#}", 
                                value))
' Displays ### 123 dollars and 00 cents ###

Console.WriteLine(value.ToString("\\\\\\ ##0 dollars and \0\0 cents \\\\\\"))
Console.WriteLine(String.Format("{0:\\\\\\ ##0 dollars and \0\0 cents \\\\\\}", 
                                value))
' Displays \\\ 123 dollars and 00 cents \\\

表のトップへBack to table

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

セミコロン (;) は、値が正、負、ゼロのいずれであるかに応じて異なる書式設定を数値に適用する条件付き書式指定子です。The semicolon (;) is a conditional format specifier that applies different formatting to a number depending on whether its value is positive, negative, or zero. このように数値の内容によって適用する書式を変更するには、カスタム書式指定文字列に、セミコロンで区切ったセクションを最大 3 つまで作成します。To produce this behavior, a custom format string can contain up to three sections separated by semicolons. これらのセクションの説明を次に示します。These sections are described in the following table.

セクションの数Number of sections 説明Description
1 つOne section 書式指定文字列はすべての値に適用されます。The format string applies to all values.
2 つTwo sections 最初のセクションが正の値とゼロに適用され、2 番目のセクションが負の値に適用されます。The first section applies to positive values and zeros, and the second section applies to negative values.

書式設定対象の数値が負の数値であるが、2 番目のセクションの書式指定に従って丸めた結果ゼロになる場合には、1 番目のセクションの書式に従ってこのゼロが書式設定されます。If the number to be formatted is negative, but becomes zero after rounding according to the format in the second section, the resulting zero is formatted according to the first section.
3 つThree sections 最初のセクションが正の値、2 番目のセクションが負の値、3 番目のセクションがゼロに適用されます。The first section applies to positive values, the second section applies to negative values, and the third section applies to zeros.

ゼロ以外の値すべてに 1 番目のセクションが適用される場合には、2 番目のセクションが空になる (セミコロンの間に何も表示されない) ことがあります。The second section can be left empty (by having nothing between the semicolons), in which case the first section applies to all nonzero values.

書式設定対象の数値がゼロ以外の負の数値であるが、1 番目または 2 番目のセクションの書式に従って丸めた結果ゼロになる場合には、3 番目のセクションの書式に従ってこのゼロが書式設定されます。If the number to be formatted is nonzero, but becomes zero after rounding according to the format in the first or second section, the resulting zero is formatted according to the third section.

セクション区切り記号は、最後の値が書式設定されるときに、数値に関連付けられた既存の書式設定をすべて無視します。Section separators ignore any preexisting formatting associated with a number when the final value is formatted. たとえば、セクション区切り記号を使用する場合、負の値はマイナス記号を付けずに表示されます。For example, negative values are always displayed without a minus sign when section separators are used. 最終的に書式設定された値にマイナス記号を付ける場合は、カスタム書式指定子の中に明示的にマイナス記号を含める必要があります。If you want the final formatted value to have a minus sign, you should explicitly include the minus sign as part of the custom format specifier.

次の例では、";" 書式指定子を使用して、正数、負数、ゼロの各部分に対し、それぞれ異なる書式を設定します。The following example uses the ";" format specifier to format positive, negative, and zero numbers differently.

double posValue = 1234;
double negValue = -1234;
double zeroValue = 0;

String^ fmt2 = "##;(##)";
String^ fmt3 = "##;(##);**Zero**";

Console::WriteLine(posValue.ToString(fmt2));  
Console::WriteLine(String::Format("{0:" + fmt2 + "}", posValue));    
// Displays 1234

Console::WriteLine(negValue.ToString(fmt2));  
Console::WriteLine(String::Format("{0:" + fmt2 + "}", negValue));    
// Displays (1234)

Console::WriteLine(zeroValue.ToString(fmt3)); 
Console::WriteLine(String::Format("{0:" + fmt3 + "}", zeroValue));
// Displays **Zero**
double posValue = 1234;
double negValue = -1234;
double zeroValue = 0;

string fmt2 = "##;(##)";
string fmt3 = "##;(##);**Zero**";

Console.WriteLine(posValue.ToString(fmt2));  
Console.WriteLine(String.Format("{0:" + fmt2 + "}", posValue));    
// Displays 1234

Console.WriteLine(negValue.ToString(fmt2));  
Console.WriteLine(String.Format("{0:" + fmt2 + "}", negValue));    
// Displays (1234)

Console.WriteLine(zeroValue.ToString(fmt3)); 
Console.WriteLine(String.Format("{0:" + fmt3 + "}", zeroValue));
// Displays **Zero**
Dim posValue As Double = 1234
Dim negValue As Double = -1234
Dim zeroValue As Double = 0

Dim fmt2 As String = "##;(##)"
Dim fmt3 As String = "##;(##);**Zero**"

Console.WriteLine(posValue.ToString(fmt2))   
Console.WriteLine(String.Format("{0:" + fmt2 + "}", posValue))    
' Displays 1234

Console.WriteLine(negValue.ToString(fmt2))   
Console.WriteLine(String.Format("{0:" + fmt2 + "}", negValue))    
' Displays (1234)

Console.WriteLine(zeroValue.ToString(fmt3))  
Console.WriteLine(String.Format("{0:" + fmt3 + "}", zeroValue))
' Displays **Zero**

表のトップへBack to table

文字リテラルCharacter literals

カスタム数値書式指定文字列に含まれる書式指定子は、常に書式設定文字として解釈され、決してリテラル文字としては解釈されません。Format specifiers that appear in a custom numeric format string are always interpreted as formatting characters and never as literal characters. これには以下の文字が含まれます。This includes the following characters:

その他の文字はすべて、文字リテラルとして常に解釈され、書式設定操作では、変更されずに結果の文字列に含まれます。All other characters are always interpreted as character literals and, in a formatting operation, are included in the result string unchanged. 解析操作では、これらは入力文字列の文字と完全に一致している必要があります。比較では大文字小文字を区別します。In a parsing operation, they must match the characters in the input string exactly; the comparison is case-sensitive.

次の例は、リテラル文字の単位 (この場合は千単位) の一般的な使用例を示しています。The following example illustrates one common use of literal character units (in this case, thousands):

double n = 123.8;
Console.WriteLine($"{n:#,##0.0K}");
// The example displays the following output:
//      123.8K   
Dim n As Double = 123.8
Console.WriteLine($"{n:#,##0.0K}")
' The example displays the following output:
'       123.8K

文字が結果の文字列に含まれるように、または入力文字列で正常に解析されるように、文字が書式指定文字としてではなく、リテラル文字として解釈されることを示すには、次の 2 つの方法があります。There are two ways to indicate that characters are to be interpreted as literal characters and not as formatting characters, so that they can be included in a result string or successfully parsed in an input string:

  • 書式指定文字をエスケープします。By escaping a formatting character. 詳細については、"\" 文字のセクションを参照してください。For more information, see The "\" escape character.

  • リテラル文字列全体を引用符のアポストロフィで囲みます。By enclosing the entire literal string in quotation apostrophes.

次の例では、両方のアプローチを使用して、カスタム数値書式指定文字列に予約文字を含めています。The following example uses both approaches to include reserved characters in a custom numeric format string.

 [!code-csharp-interactive[including reserved characters](~/samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/literal1.cs#1)]
 [!code-vb[including reserved characters](~/samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/literal1.vb#1)]  

メモNotes

浮動小数点の無限大値と NaN (非数) 値Floating-Point infinities and NaN

Single の浮動小数点型または Double の浮動小数点型が正の無限大、負の無限大、または NaN (非数) である場合は、書式指定文字列とは関係なく、現在適用可能な PositiveInfinitySymbolオブジェクトによって指定される NegativeInfinitySymbolNaNSymbol 、または NumberFormatInfo の各プロパティの値は、書式設定された文字列となります。Regardless of the format string, if the value of a Single or Double floating-point type is positive infinity, negative infinity, or not a number (NaN), the formatted string is the value of the respective PositiveInfinitySymbol, NegativeInfinitySymbol, or NaNSymbol property specified by the currently applicable NumberFormatInfo object.

コントロール パネルの設定Control Panel settings

コントロール パネルの [地域と言語のオプション] での設定は、書式設定操作によって生成される結果の文字列に影響します。The settings in the Regional and Language Options item in Control Panel influence the result string produced by a formatting operation. これらの設定は、現在のスレッド カルチャに関連付けられた NumberFormatInfo オブジェクトを初期化するために使用され、現在のスレッド カルチャから書式設定の制御に使用される値が提供されます。Those settings are used to initialize the NumberFormatInfo object associated with the current thread culture, and the current thread culture provides values used to govern formatting. コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。Computers that use different settings generate different result strings.

また、CultureInfo.CultureInfo(String) コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい CultureInfo オブジェクトをインスタンス化した場合、コントロール パネルの [地域と言語のオプション] 項目で設定されたカスタマイズが新しい CultureInfo オブジェクトに適用されます。In addition, if you use the CultureInfo.CultureInfo(String) constructor to instantiate a new CultureInfo object that represents the same culture as the current system culture, any customizations established by the Regional and Language Options item in Control Panel will be applied to the new CultureInfo object. CultureInfo.CultureInfo(String, Boolean) コンストラクターを使用すると、システムに対するカスタマイズが反映されない CultureInfo オブジェクトを作成できます。You can use the CultureInfo.CultureInfo(String, Boolean) constructor to create a CultureInfo object that does not reflect a system's customizations.

丸めと固定小数点の書式指定文字列Rounding and fixed-point format strings

固定小数点の書式指定文字列 (つまり指数表記の書式指定文字を含まない書式指定文字列) の場合は、小数点以下の桁数が小数点の右側にある桁プレースホルダーの数と同じである数値に丸められます。For fixed-point format strings (that is, format strings that do not contain scientific notation format characters), numbers are rounded to as many decimal places as there are digit placeholders to the right of the decimal point. 書式指定文字列に小数点が含まれていない場合には、最も近い整数に丸められます。If the format string does not contain a decimal point, the number is rounded to the nearest integer. 数値の桁数が、整数部の桁プレースホルダーの数よりも大きい場合には、桁プレースホルダーに収まらない桁が、結果の文字列の 1 番目の桁プレースホルダーの直前にコピーされます。If the number has more digits than there are digit placeholders to the left of the decimal point, the extra digits are copied to the result string immediately before the first digit placeholder.

表のトップへBack to table

Example

2 つのカスタム数値書式指定文字列の例を次に示します。The following example demonstrates two custom numeric format strings. どちらの場合も、桁プレースホルダー (#) によって数値データが表示され、それ以外の文字はすべて結果の文字列にコピーされます。In both cases, the digit placeholder (#) displays the numeric data, and all other characters are copied to the result string.

double number1 = 1234567890;
String^ value1 = number1.ToString("(###) ###-####");
Console::WriteLine(value1);

int number2 = 42;
String^ value2 = number2.ToString("My Number = #");
Console::WriteLine(value2);
// The example displays the following output:
//       (123) 456-7890
//       My Number = 42
double number1 = 1234567890;
string value1 = number1.ToString("(###) ###-####");
Console.WriteLine(value1);

int number2 = 42;
string value2 = number2.ToString("My Number = #");
Console.WriteLine(value2);
// The example displays the following output:
//       (123) 456-7890
//       My Number = 42
Dim number1 As Double = 1234567890
Dim value1 As String = number1.ToString("(###) ###-####")
Console.WriteLine(value1)

Dim number2 As Integer = 42
Dim value2 As String = number2.ToString("My Number = #")
Console.WriteLine(value2)
' The example displays the following output:
'       (123) 456-7890
'       My Number = 42

表のトップへBack to table

関連項目See also

System.Globalization.NumberFormatInfo
型の書式設定Formatting Types
Standard Numeric Format StringsStandard Numeric Format Strings
方法: 数値に先行するゼロを埋め込むHow to: Pad a Number with Leading Zeros
サンプル: .NET Framework 4 の書式設定ユーティリティSample: .NET Framework 4 Formatting Utility