標準の数値書式指定文字列Standard Numeric Format Strings

一般的な数値型を書式設定するには、標準の数値書式指定文字列を使用します。Standard numeric format strings are used to format common numeric types. 標準の数値書式指定文字列の形式は Axx です。A standard numeric format string takes the form Axx, where:

  • A書式指定子 です。これは 1 文字の英文字です。A is a single alphabetic character called the format specifier. 空白を含む複数の英文字で構成される数値書式指定文字列は、カスタム数値書式指定文字列として解釈されます。Any numeric format string that contains more than one alphabetic character, including white space, is interpreted as a custom numeric format string. 詳細については、「カスタム数値書式指定文字列」をご覧ください。For more information, see Custom Numeric Format Strings.

  • xx精度指定子 です。これは省略可能な整数値です。xx is an optional integer called the precision specifier. 精度指定子は 0 ~ 99 の範囲で指定され、結果の桁数に影響します。The precision specifier ranges from 0 to 99 and affects the number of digits in the result. 精度指定子は、文字列形式の数値の桁数を制御することに注意してください。Note that the precision specifier controls the number of digits in the string representation of a number. 精度指定子では、数値を丸めません。It does not round the number itself. 丸め操作を実行するには、Math.CeilingMath.Floor、または Math.Round の各メソッドを使用します。To perform a rounding operation, use the Math.Ceiling, Math.Floor, or Math.Round method.

    精度指定子が結果文字列内の小数部の桁数を制御する際、結果文字列は、ゼロから離れる方向に丸められる数を反映します (つまり、MidpointRounding.AwayFromZero を使用します)。When precision specifier controls the number of fractional digits in the result string, the result strings reflect numbers that are rounded away from zero (that is, using MidpointRounding.AwayFromZero).

    注意

    精度指定子は、結果文字列の桁数を決定します。The precision specifier determines the number of digits in the result string. 結果文字列に先頭または末尾のスペースを埋め込むには、複合書式指定機能を使用して、書式指定項目に alignment コンポーネントを定義します。To pad a result string with leading or trailing spaces, use the composite formatting feature and define an alignment component in the format item.

標準の数値書式指定文字列は、以下をサポートしています。Standard numeric format strings are supported by:

ヒント

書式指定ユーティリティをダウンロードできます。このアプリケーションを使用すると、書式指定文字列を数値または日付と時刻の値に適用して、結果の文字列を表示できます。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 standard numeric format specifiers and displays sample output produced by each format specifier. 標準の数値書式指定文字列の使用方法については、「メモ」をご覧ください。それらを使用する包括的な例については、「」をご覧ください。See the Notes section for additional information about using standard numeric format strings, and the Example section for a comprehensive illustration of their use.

書式指定子Format specifier nameName 説明Description 使用例Examples
"C" または "c""C" or "c" 通貨Currency 結果: 通貨値。Result: A currency value.

サポート: すべての数値型。Supported by: All numeric types.

精度指定子: 小数部の桁数。Precision specifier: Number of decimal digits.

既定の精度指定子: NumberFormatInfo.CurrencyDecimalDigits によって定義されます。Default precision specifier: Defined by NumberFormatInfo.CurrencyDecimalDigits.

詳細については、「通貨 ("C") 書式指定子」を参照してください。More information: The Currency ("C") Format Specifier.
123.456 ("C", en-US) -> $123.46123.456 ("C", en-US) -> $123.46

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

123.456 ("C", ja-JP) -> ¥123123.456 ("C", ja-JP) -> ¥123

-123.456 ("C3", en-US) -> ($123.456)-123.456 ("C3", en-US) -> ($123.456)

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

-123.456 ("C3", ja-JP) -> -¥123.456-123.456 ("C3", ja-JP) -> -¥123.456
"D" または "d""D" or "d" Decimal (10 進数型)Decimal 結果: 必要に応じて負の符号が付く整数。Result: Integer digits with optional negative sign.

サポート: 整数型のみ。Supported by: Integral types only.

精度指定子: 最小桁数。Precision specifier: Minimum number of digits.

既定の精度指定子: 必要な最小桁数。Default precision specifier: Minimum number of digits required.

詳細については、「10 進数 ("D") 書式指定子」を参照してください。More information: The Decimal("D") Format Specifier.
1234 ("D") -> 12341234 ("D") -> 1234

-1234 ("D6") -> -001234-1234 ("D6") -> -001234
"E" または "e""E" or "e" 指数Exponential (scientific) 結果: 指数表記。Result: Exponential notation.

サポート: すべての数値型。Supported by: All numeric types.

精度指定子: 小数部の桁数。Precision specifier: Number of decimal digits.

既定の精度指定子: 6。Default precision specifier: 6.

詳細については、「指数 ("E") 書式指定子」を参照してください。More information: The Exponential ("E") Format Specifier.
1052.0329112756 ("E", en-US) -> 1.052033E+0031052.0329112756 ("E", en-US) -> 1.052033E+003

1052.0329112756 ("e", fr-FR) -> 1,052033e+0031052.0329112756 ("e", fr-FR) -> 1,052033e+003

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

-1052.0329112756 ("E2", fr_FR) -> -1,05E+003-1052.0329112756 ("E2", fr_FR) -> -1,05E+003
"F" または "f""F" or "f" 固定小数点Fixed-point 結果: 必要に応じて負の符号が付く整数と小数。Result: Integral and decimal digits with optional negative sign.

サポート: すべての数値型。Supported by: All numeric types.

精度指定子: 小数部の桁数。Precision specifier: Number of decimal digits.

既定の精度指定子: NumberFormatInfo.NumberDecimalDigits によって定義されます。Default precision specifier: Defined by NumberFormatInfo.NumberDecimalDigits.

詳細については、「固定小数点 ("F") 書式指定子」を参照してください。More information: The Fixed-Point ("F") Format Specifier.
1234.567 ("F", en-US) -> 1234.571234.567 ("F", en-US) -> 1234.57

1234.567 ("F", de-DE) -> 1234,571234.567 ("F", de-DE) -> 1234,57

1234 ("F1", en-US) -> 1234.01234 ("F1", en-US) -> 1234.0

1234 ("F1", de-DE) -> 1234,01234 ("F1", de-DE) -> 1234,0

-1234.56 ("F4", en-US) -> -1234.5600-1234.56 ("F4", en-US) -> -1234.5600

-1234.56 ("F4", de-DE) -> -1234,5600-1234.56 ("F4", de-DE) -> -1234,5600
"G" または "g""G" or "g" 全般General 結果: 固定小数点表記または指数表記のいずれかのより簡潔な形式。Result: The more compact of either fixed-point or scientific notation.

サポート: すべての数値型。Supported by: All numeric types.

精度指定子: 有効桁数。Precision specifier: Number of significant digits.

既定の精度指定子: 数値型によって異なります。Default precision specifier: Depends on numeric type.

詳細については、「一般 ("G") 書式指定子」を参照してください。More information: The General ("G") Format Specifier.
-123.456 ("G", en-US) -> -123.456-123.456 ("G", en-US) -> -123.456

-123.456 ("G", sv-SE) -> -123,456-123.456 ("G", sv-SE) -> -123,456

123.4546 ("G4", en-US) -> 123.5123.4546 ("G4", en-US) -> 123.5

123.4546 ("G4", sv-SE) -> 123,5123.4546 ("G4", sv-SE) -> 123,5

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

-1.234567890e-25 ("G", sv-SE) -> -1,23456789E-25-1.234567890e-25 ("G", sv-SE) -> -1,23456789E-25
"N" または "n""N" or "n" 数値Number 結果: 必要に応じて負の符号が付く整数と小数、桁区切り記号、および小数点記号。Result: Integral and decimal digits, group separators, and a decimal separator with optional negative sign.

サポート: すべての数値型。Supported by: All numeric types.

精度指定子: 小数部の桁数。Precision specifier: Desired number of decimal places.

既定の精度指定子: NumberFormatInfo.NumberDecimalDigits によって定義されます。Default precision specifier: Defined by NumberFormatInfo.NumberDecimalDigits.

詳細については、「数値 ("N") 書式指定子」を参照してください。More information: The Numeric ("N") Format Specifier.
1234.567 ("N", en-US) -> 1,234.571234.567 ("N", en-US) -> 1,234.57

1234.567 ("N", ru-RU) -> 1 234,571234.567 ("N", ru-RU) -> 1 234,57

1234 ("N1", en-US) -> 1,234.01234 ("N1", en-US) -> 1,234.0

1234 ("N1", ru-RU) -> 1 234,01234 ("N1", ru-RU) -> 1 234,0

-1234.56 ("N3", en-US) -> -1,234.560-1234.56 ("N3", en-US) -> -1,234.560

-1234.56 ("N3", ru-RU) -> -1 234,560-1234.56 ("N3", ru-RU) -> -1 234,560
"P" または "p""P" or "p" パーセントPercent 結果: 数値に 100 を掛けて、パーセント記号を付けて表示します。Result: Number multiplied by 100 and displayed with a percent symbol.

サポート: すべての数値型。Supported by: All numeric types.

精度指定子: 小数部の桁数。Precision specifier: Desired number of decimal places.

既定の精度指定子: NumberFormatInfo.PercentDecimalDigits によって定義されます。Default precision specifier: Defined by NumberFormatInfo.PercentDecimalDigits.

詳細については、「パーセント ("P") 書式指定子」を参照してください。More information: The Percent ("P") Format Specifier.
1 ("P", en-US) -> 100.00 %1 ("P", en-US) -> 100.00 %

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

-0.39678 ("P1", en-US) -> -39.7 %-0.39678 ("P1", en-US) -> -39.7 %

-0.39678 ("P1", fr-FR) -> -39,7 %-0.39678 ("P1", fr-FR) -> -39,7 %
"R" または "r""R" or "r" ラウンドトリップRound-trip 結果: 同じ数値にラウンドトリップできる文字列。Result: A string that can round-trip to an identical number.

サポート: SingleDouble、および BigIntegerSupported by: Single, Double, and BigInteger.

注: BigInteger 型にのみお勧めします。Note: Recommended for the BigInteger type only. Double 型の場合は "G17"、Single 型の場合は "G9" を使用します。For Double types, use "G17"; for Single types, use "G9".
精度指定子: 無視されます。Precision specifier: Ignored.

詳細については、「ラウンドトリップ ("R") 書式指定子」を参照してください。More information: The Round-trip ("R") Format Specifier.
123456789.12345678 ("R") -> 123456789.12345678123456789.12345678 ("R") -> 123456789.12345678

-1234567890.12345678 ("R") -> -1234567890.1234567-1234567890.12345678 ("R") -> -1234567890.1234567
"X" または "x""X" or "x" 16 進数Hexadecimal 結果: 16 進数文字列。Result: A hexadecimal string.

サポート: 整数型のみ。Supported by: Integral types only.

精度指定子: 結果文字列の桁数。Precision specifier: Number of digits in the result string.

詳細については、「16 進数 ("X") 書式指定子」を参照してください。More information: The HexaDecimal ("X") Format Specifier.
255 ("X") -> FF255 ("X") -> FF

-1 ("x") -> ff-1 ("x") -> ff

255 ("x4") -> 00ff255 ("x4") -> 00ff

-1 ("X4") -> 00FF-1 ("X4") -> 00FF
その他の 1 文字Any other single character 未定義の指定子Unknown specifier 結果: 実行時に FormatException をスローします。Result: Throws a FormatException at run time.

標準の数値書式指定文字列の使用Using Standard Numeric Format Strings

注意

この記事の C# 例は、Try.NET インライン コード ランナーとプレイグラウンドで実行されます。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. 変更後のコードが対話型ウィンドウで実行されるか、コンパイルできなかった場合、対話型ウィンドウにすべての C# コンパイラ エラー メッセージが表示されます。The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

標準の数値書式指定文字列を使用すると、次のいずれかの方法で数値の書式を定義できます。A standard numeric format string can be used to define the formatting of a numeric value in one of two ways:

  • ToString パラメーターを持つ format メソッドのオーバーロードに渡す。It can be passed to an overload of the ToString method that has a format parameter. 次の例では、数値の書式を現在のカルチャ (ここでは en-US カルチャ) の通貨文字列に設定しています。The following example formats a numeric value as a currency string in the current culture (in this case, the en-US culture).

    Decimal value = static_cast<Decimal>(123.456);
    Console::WriteLine(value.ToString("C2"));
    // Displays $123.46
    
    decimal value = 123.456m;
    Console.WriteLine(value.ToString("C2"));
    // Displays $123.46
    
    Dim value As Decimal = 123.456d
    Console.WriteLine(value.ToString("C2"))         
    ' Displays $123.46
    
  • String.FormatConsole.WriteLineStringBuilder.AppendFormat などのメソッドで使用される書式指定項目の formatString 引数として渡す。It can be supplied as the formatString argument in a format item used with such methods as String.Format, Console.WriteLine, and StringBuilder.AppendFormat. 詳細については、「複合書式指定」をご覧ください。For more information, see Composite Formatting. 次の例では、書式指定項目を使用して文字列に通貨値を挿入しています。The following example uses a format item to insert a currency value in a string.

    Decimal value = static_cast<Decimal>(123.456);
    Console::WriteLine("Your account balance is {0:C2}.", value);
    // Displays "Your account balance is $123.46."
    
    decimal value = 123.456m;
    Console.WriteLine("Your account balance is {0:C2}.", value);
    // Displays "Your account balance is $123.46."
    
    Dim value As Decimal = 123.456d
    Console.WriteLine("Your account balance is {0:C2}.", value)
    ' Displays "Your account balance is $123.46."
    

    オプションで、alignment 引数を渡して数値フィールドの幅と、その値を右揃えまたは左揃えにするかどうかを指定します。Optionally, you can supply an alignment argument to specify the width of the numeric field and whether its value is right- or left-aligned. 次の例では、通貨の値が 28 文字フィールドでは左揃えになっており、14 文字フィールドでは右揃えになっています。The following example left-aligns a currency value in a 28-character field, and it right-aligns a currency value in a 14-character field.

    array<Decimal>^ amounts = { static_cast<Decimal>(16305.32), 
                                static_cast<Decimal>(18794.16) };
    Console::WriteLine("   Beginning Balance           Ending Balance");
    Console::WriteLine("   {0,-28:C2}{1,14:C2}", amounts[0], amounts[1]);
    // Displays:
    //        Beginning Balance           Ending Balance
    //        $16,305.32                      $18,794.16      
    
    decimal[] amounts = { 16305.32m, 18794.16m };
    Console.WriteLine("   Beginning Balance           Ending Balance");
    Console.WriteLine("   {0,-28:C2}{1,14:C2}", amounts[0], amounts[1]);
    // Displays:
    //        Beginning Balance           Ending Balance
    //        $16,305.32                      $18,794.16      
    
    Dim amounts() As Decimal = { 16305.32d, 18794.16d }
    Console.WriteLine("   Beginning Balance           Ending Balance")
    Console.WriteLine("   {0,-28:C2}{1,14:C2}", amounts(0), amounts(1))
    ' Displays:
    '        Beginning Balance           Ending Balance
    '        $16,305.32                      $18,794.16      
    
  • これは補間文字列の挿入式項目内で formatString 引数として指定できます。It can be supplied as the formatString argument in an interpolated expression item of an interpolated string. 詳細については、C# リファレンスの文字列補間または Visual Basic リファレンスの補間文字列に関するトピックを参照してください。For more information, see the String interpolation topic in the C# reference or the Interpolated strings topic in the Visual Basic reference.

以降では、それぞれの標準の数値書式指定文字列について詳しく説明します。The following sections provide detailed information about each of the standard numeric format strings.

通貨 ("C") 書式指定子The Currency ("C") Format Specifier

"C" (通貨) 書式指定子は、金額を表す文字列に数値を変換します。The "C" (or currency) format specifier converts a number to a string that represents a currency amount. 精度指定子は、結果文字列の小数部の桁数を示します。The precision specifier indicates the desired number of decimal places in the result string. 精度指定子を省略すると、NumberFormatInfo.CurrencyDecimalDigits プロパティによって既定の桁数が定義されます。If the precision specifier is omitted, the default precision is defined by the NumberFormatInfo.CurrencyDecimalDigits property.

書式指定される値が指定または既定の小数部の桁数を超えている場合、小数値は結果文字列で丸められます。If the value to be formatted has more than the specified or default number of decimal places, the fractional value is rounded in the result string. 指定した小数部の桁数の右側にある値が 5 以上の場合、結果文字列の最後の桁はゼロから離れる方向に丸められます。If the value to the right of the number of specified decimal places is 5 or greater, the last digit in the result string is rounded away from zero.

結果文字列は、現在の NumberFormatInfo オブジェクトの書式情報に影響されます。The result string is affected by the formatting information of the current NumberFormatInfo object. 返される文字列の書式を制御する NumberFormatInfo のプロパティの一覧を次の表に示します。The following table lists the NumberFormatInfo properties that control the formatting of the returned string.

NumberFormatInfo のプロパティNumberFormatInfo property 説明Description
CurrencyPositivePattern 正の値の通貨記号の位置を定義します。Defines the placement of the currency symbol for positive values.
CurrencyNegativePattern 負の値の通貨記号の位置を定義し、かっこと NegativeSign プロパティのどちらによって負の符号が表されるかを指定します。Defines the placement of the currency symbol for negative values, and specifies whether the negative sign is represented by parentheses or the NegativeSign property.
NegativeSign CurrencyNegativePattern でかっこを使用しないように示されている場合に使用される負の符号を定義します。Defines the negative sign used if CurrencyNegativePattern indicates that parentheses are not used.
CurrencySymbol 通貨記号を定義します。Defines the currency symbol.
CurrencyDecimalDigits 通貨値の既定の小数点以下桁数を定義します。Defines the default number of decimal digits in a currency value. この値は、精度指定子を使用してオーバーライドできます。This value can be overridden by using the precision specifier.
CurrencyDecimalSeparator 整数部と小数部を区切る文字列を定義します。Defines the string that separates integral and decimal digits.
CurrencyGroupSeparator 整数の桁を区切る文字列を定義します。Defines the string that separates groups of integral numbers.
CurrencyGroupSizes 桁を何桁ごとに区切るかを定義します。Defines the number of integer digits that appear in a group.

次の例では、通貨書式指定子を使って Double 値の書式を設定します。The following example formats a Double value with the currency format specifier.

double value = 12345.6789;
Console::WriteLine(value.ToString("C", CultureInfo::CurrentCulture));

Console::WriteLine(value.ToString("C3", CultureInfo::CurrentCulture));

Console::WriteLine(value.ToString("C3", 
                  CultureInfo::CreateSpecificCulture("da-DK")));
// The example displays the following output on a system whose
// current culture is English (United States):
//       $12,345.68
//       $12,345.679
//       kr 12.345,679
double value = 12345.6789;
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", 
                  CultureInfo.CreateSpecificCulture("da-DK")));
// The example displays the following output on a system whose
// current culture is English (United States):
//       $12,345.68
//       $12,345.679
//       kr 12.345,679
Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture))

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture))

Console.WriteLine(value.ToString("C3", _
                  CultureInfo.CreateSpecificCulture("da-DK")))
' The example displays the following output on a system whose
' current culture is English (United States):
'       $12,345.68
'       $12,345.679
'       kr 12.345,679

表のトップへBack to table

10 進数 ("D") 書式指定子The Decimal ("D") Format Specifier

"D" (10 進数) 書式指定子は、0 ~ 9 の数字から成る文字列に数値を変換します。負の数値の場合は、文字列の先頭にマイナス記号が挿入されます。The "D" (or decimal) format specifier converts a number to a string of decimal digits (0-9), prefixed by a minus sign if the number is negative. この書式指定は整数型でだけサポートされています。This format is supported only for integral types.

精度指定子は、変換後の文字列の最小桁数を示します。The precision specifier indicates the minimum number of digits desired in the resulting string. 必要に応じて、精度指定子によって指定された桁数に達するまで、数値の左側にゼロが埋め込まれます。If required, the number is padded with zeros to its left to produce the number of digits given by the precision specifier. 精度指定子が指定されていない場合の既定値は、先行するゼロを含めずに整数を表すために必要な最小値です。If no precision specifier is specified, the default is the minimum value required to represent the integer without leading zeros.

結果文字列は、現在の NumberFormatInfo オブジェクトの書式情報に影響されます。The result string is affected by the formatting information of the current NumberFormatInfo object. 次の表に示すように、結果文字列の書式に影響を与えるプロパティは 1 つです。As the following table shows, a single property affects the formatting of the result string.

NumberFormatInfo のプロパティNumberFormatInfo property 説明Description
NegativeSign 数値が負であることを示す文字列を定義します。Defines the string that indicates that a number is negative.

次の例では、10 進数の書式指定子を使って Int32 値の書式を設定します。The following example formats an Int32 value with the decimal format specifier.

int value; 

value = 12345;
Console::WriteLine(value.ToString("D"));
// Displays 12345
Console::WriteLine(value.ToString("D8"));
// Displays 00012345

value = -12345;
Console::WriteLine(value.ToString("D"));
// Displays -12345
Console::WriteLine(value.ToString("D8"));
// Displays -00012345
int value; 

value = 12345;
Console.WriteLine(value.ToString("D"));
// Displays 12345
Console.WriteLine(value.ToString("D8"));
// Displays 00012345

value = -12345;
Console.WriteLine(value.ToString("D"));
// Displays -12345
Console.WriteLine(value.ToString("D8"));
// Displays -00012345
Dim value As Integer 

value = 12345
Console.WriteLine(value.ToString("D"))
' Displays 12345   
Console.WriteLine(value.ToString("D8"))
' Displays 00012345

value = -12345
Console.WriteLine(value.ToString("D"))
' Displays -12345
Console.WriteLine(value.ToString("D8"))
' Displays -00012345

表のトップへBack to table

指数 ("E") 書式指定子The Exponential ("E") Format Specifier

指数 ("E") 書式指定子は、"-d.ddd…E+ddd" または "-d.ddd…e+ddd" という形式の文字列に数値を変換します。この "d" は 0 ~ 9 の 1 桁の数字を示します。The exponential ("E") format specifier converts a number to a string of the form "-d.ddd…E+ddd" or "-d.ddd…e+ddd", where each "d" indicates a digit (0-9). 負の数値の場合、変換後の文字列の先頭にマイナス記号が挿入されます。The string starts with a minus sign if the number is negative. 小数点の前には 1 桁の数字が必ず示されます。Exactly one digit always precedes the decimal point.

精度指定子は、小数部の桁数を示します。The precision specifier indicates the desired number of digits after the decimal point. 精度指定子を省略すると、小数部の桁数として既定の 6 桁が使用されます。If the precision specifier is omitted, a default of six digits after the decimal point is used.

書式指定子が大文字の場合は指数部の前に "E" が挿入され、小文字の場合は "e" が挿入されます。The case of the format specifier indicates whether to prefix the exponent with an "E" or an "e". 指数部は常に、プラス記号またはマイナス記号のいずれかと、3 桁以上の桁で構成されます。The exponent always consists of a plus or minus sign and a minimum of three digits. 指数部の桁数が最小桁数の 3 桁よりも少ない場合には、3 桁になるようにゼロが埋め込まれます。The exponent is padded with zeros to meet this minimum, if required.

結果文字列は、現在の NumberFormatInfo オブジェクトの書式情報に影響されます。The result string is affected by the formatting information of the current NumberFormatInfo object. 返される文字列の書式を制御する NumberFormatInfo のプロパティの一覧を次の表に示します。The following table lists the NumberFormatInfo properties that control the formatting of the returned string.

NumberFormatInfo のプロパティNumberFormatInfo property 説明Description
NegativeSign 係数と指数部の両方で数値が負であることを示す文字列を定義します。Defines the string that indicates that a number is negative for both the coefficient and exponent.
NumberDecimalSeparator 係数の整数部と小数部を区切る文字列を定義します。Defines the string that separates the integral digit from decimal digits in the coefficient.
PositiveSign 指数部が正であることを示す文字列を定義します。Defines the string that indicates that an exponent is positive.

次の例では、指数書式指定子を使って Double 値の書式を設定します。The following example formats a Double value with the exponential format specifier.

double value = 12345.6789;
Console::WriteLine(value.ToString("E", CultureInfo::InvariantCulture));
// Displays 1.234568E+004

Console::WriteLine(value.ToString("E10", CultureInfo::InvariantCulture));
// Displays 1.2345678900E+004

Console::WriteLine(value.ToString("e4", CultureInfo::InvariantCulture));
// Displays 1.2346e+004

Console::WriteLine(value.ToString("E", 
                  CultureInfo::CreateSpecificCulture("fr-FR")));
// Displays 1,234568E+004
double value = 12345.6789;
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture));
// Displays 1.234568E+004

Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture));
// Displays 1.2345678900E+004

Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture));
// Displays 1.2346e+004

Console.WriteLine(value.ToString("E", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 1,234568E+004
Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture))
' Displays 1.234568E+004

Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture))
' Displays 1.2345678900E+004

Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture))
' Displays 1.2346e+004

Console.WriteLine(value.ToString("E", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 1,234568E+004

表のトップへBack to table

固定小数点 ("F") 書式指定子The Fixed-Point ("F") Format Specifier

固定小数点 ("F) 書式指定子は、"-ddd.ddd…" という形式の文字列に数値を変換します。この "d" は 0 から 9 の 1 桁の数字を示します。The fixed-point ("F") format specifier converts a number to a string of the form "-ddd.ddd…" where each "d" indicates a digit (0-9). 負の数値の場合、変換後の文字列の先頭にマイナス記号が挿入されます。The string starts with a minus sign if the number is negative.

精度指定子は、小数部の桁数を示します。The precision specifier indicates the desired number of decimal places. 精度指定子を省略すると、現在の NumberFormatInfo.NumberDecimalDigits プロパティによって桁数が指定されます。If the precision specifier is omitted, the current NumberFormatInfo.NumberDecimalDigits property supplies the numeric precision.

結果文字列は、現在の NumberFormatInfo オブジェクトの書式情報に影響されます。The result string is affected by the formatting information of the current NumberFormatInfo object. 結果文字列の書式を制御する NumberFormatInfo オブジェクトのプロパティの一覧を次の表に示します。The following table lists the properties of the NumberFormatInfo object that control the formatting of the result string.

NumberFormatInfo のプロパティNumberFormatInfo property 説明Description
NegativeSign 数値が負であることを示す文字列を定義します。Defines the string that indicates that a number is negative.
NumberDecimalSeparator 整数部と小数部を区切る文字列を定義します。Defines the string that separates integral digits from decimal digits.
NumberDecimalDigits 既定の小数点以下桁数を定義します。Defines the default number of decimal digits. この値は、精度指定子を使用してオーバーライドできます。This value can be overridden by using the precision specifier.

次の例では、固定小数点の書式指定子を使って Double および Int32 値の書式を設定します。The following example formats a Double and an Int32 value with the fixed-point format specifier.

int integerNumber;
integerNumber = 17843;
Console::WriteLine(integerNumber.ToString("F", 
                  CultureInfo::InvariantCulture));
// Displays 17843.00

integerNumber = -29541;
Console::WriteLine(integerNumber.ToString("F3", 
                  CultureInfo::InvariantCulture));
// Displays -29541.000

double doubleNumber;
doubleNumber = 18934.1879;
Console::WriteLine(doubleNumber.ToString("F", CultureInfo::InvariantCulture));
// Displays 18934.19

Console::WriteLine(doubleNumber.ToString("F0", CultureInfo::InvariantCulture));
// Displays 18934

doubleNumber = -1898300.1987;
Console::WriteLine(doubleNumber.ToString("F1", CultureInfo::InvariantCulture));  
// Displays -1898300.2

Console::WriteLine(doubleNumber.ToString("F3", 
                  CultureInfo::CreateSpecificCulture("es-ES")));
// Displays -1898300,199                        
int integerNumber;
integerNumber = 17843;
Console.WriteLine(integerNumber.ToString("F", 
                  CultureInfo.InvariantCulture));
// Displays 17843.00

integerNumber = -29541;
Console.WriteLine(integerNumber.ToString("F3", 
                  CultureInfo.InvariantCulture));
// Displays -29541.000

double doubleNumber;
doubleNumber = 18934.1879;
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture));
// Displays 18934.19

Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture));
// Displays 18934

doubleNumber = -1898300.1987;
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture));  
// Displays -1898300.2

Console.WriteLine(doubleNumber.ToString("F3", 
                  CultureInfo.CreateSpecificCulture("es-ES")));
// Displays -1898300,199                        
Dim integerNumber As Integer
integerNumber = 17843
Console.WriteLine(integerNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 17843.00

integerNumber = -29541
Console.WriteLine(integerNumber.ToString("F3", CultureInfo.InvariantCulture))
' Displays -29541.000

Dim doubleNumber As Double
doubleNumber = 18934.1879
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 18934.19

Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture))
' Displays 18934

doubleNumber = -1898300.1987
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture))  
' Displays -1898300.2

Console.WriteLine(doubleNumber.ToString("F3", _ 
                  CultureInfo.CreateSpecificCulture("es-ES")))
' Displays -1898300,199                        

表のトップへBack to table

一般 ("G") 書式指定子The General ("G") Format Specifier

一般 ("G") 書式指定子は、数値の型や、精度指定子が指定されているかどうかに応じて、固定小数点表記または指数表記のいずれかのより簡潔な形式に数値を変換します。The general ("G") format specifier converts a number to the more compact of either fixed-point or scientific notation, depending on the type of the number and whether a precision specifier is present. 精度指定子は、結果文字列の有効桁数の最大値を定義します。The precision specifier defines the maximum number of significant digits that can appear in the result string. 精度指定子が省略されている場合や、0 である場合は、次の表に示すように、数値の型によって既定の精度が決定されます。If the precision specifier is omitted or zero, the type of the number determines the default precision, as indicated in the following table.

数値型Numeric type 既定の精度Default precision
Byte または SByteByte or SByte 3 桁3 digits
Int16 または UInt16Int16 or UInt16 5 桁5 digits
Int32 または UInt32Int32 or UInt32 10 桁10 digits
Int64 19 桁19 digits
UInt64 20 桁20 digits
BigInteger 無制限 ("R" と同じ)Unlimited (same as "R")
Single 7 桁7 digits
Double 15 桁15 digits
Decimal 29 桁29 digits

数値を指数表記で表した結果の指数部が -5 よりも大きく、精度指定子よりも小さい場合は、固定小数点表記が使用されます。それ以外の場合は、指数表記が使用されます。Fixed-point notation is used if the exponent that would result from expressing the number in scientific notation is greater than -5 and less than the precision specifier; otherwise, scientific notation is used. 結果には必要に応じて小数点が含まれ、小数点の後続のゼロは省略されます。The result contains a decimal point if required, and trailing zeros after the decimal point are omitted. 精度指定子が存在し、指定された精度を結果の有効桁数が超える場合は、超過した桁は丸められ削除されます。If the precision specifier is present and the number of significant digits in the result exceeds the specified precision, the excess trailing digits are removed by rounding.

ただし、数値が Decimal で、精度指定子が省略されている場合は、常に固定小数点表記が使用され、後続のゼロは保持されます。However, if the number is a Decimal and the precision specifier is omitted, fixed-point notation is always used and trailing zeros are preserved.

指数表記が使用される場合、結果の指数部には、書式指定子が "G" のときには "E"、書式指定子が "g" のときには "e" というプレフィックスが付きます。If scientific notation is used, the exponent in the result is prefixed with "E" if the format specifier is "G", or "e" if the format specifier is "g". 指数部には少なくとも 2 桁が含まれます。The exponent contains a minimum of two digits. これは、指数部に少なくとも 3 桁が含まれる、指数書式指定子によって生成される指数表記の書式とは異なります。This differs from the format for scientific notation that is produced by the exponential format specifier, which includes a minimum of three digits in the exponent.

"G17" 書式指定子と Double 値を共に使用すると、元の Double 値のラウンド トリップが正常に実行されます。Note that, when used with a Double value, the "G17" format specifier ensures that the original Double value successfully round-trips. これは、Double が IEEE 754-2008 準拠の倍精度 (binary64) 浮動小数点数 (最大 17 桁の精度) であるためです。This is because Double is an IEEE 754-2008-compliant double-precision (binary64) floating point number that gives up to 17 significant digits of precision. 場合によっては、"R" が倍精度浮動小数点値のラウンドトリップに失敗するため、"R" 書式指定子の代わりに使用することをお勧めします。We recommend its use instead of the "R" format specifier, since in some cases "R" fails to successfully round-trip double-precision floating point values. このような場合の例を次に示します。The following example illustrates one such case.

using System;

public class Example
{
   public static void Main()
   {
      double original = 0.84551240822557006;
      var rSpecifier = original.ToString("R");
      var g17Specifier = original.ToString("G17");
      
      var rValue = Double.Parse(rSpecifier);
      var g17Value = Double.Parse(g17Specifier);
      
      Console.WriteLine($"{original:G17} = {rSpecifier} (R): {original.Equals(rValue)}");
      Console.WriteLine($"{original:G17} = {g17Specifier} (G17): {original.Equals(g17Value)}");
   }
}
// The example displays the following output:
//     0.84551240822557006 = 0.84551240822557: False
//     0.84551240822557006 = 0.84551240822557006: True
Module Example
   Public Sub Main()
      Dim original As Double = 0.84551240822557006
      Dim rSpecifier = original.ToString("R")
      Dim g17Specifier = original.ToString("G17")
      
      Dim rValue = Double.Parse(rSpecifier)
      Dim g17Value = Double.Parse(g17Specifier)
      
      Console.WriteLine($"{original:G17} = {rSpecifier} (R): {original.Equals(rValue)}")
      Console.WriteLine($"{original:G17} = {g17Specifier} (G17): {original.Equals(g17Value)}")
   End Sub
End Module
' The example displays the following output:
'     0.84551240822557006 = 0.84551240822557 (R): False
'     0.84551240822557006 = 0.84551240822557006 (G17): True
  

"G9" 書式指定子と Single 値を共に使用すると、元の Single 値のラウンド トリップが正常に実行されます。When used with a Single value, the "G9" format specifier ensures that the original Single value successfully round-trips. これは、Single が IEEE 754-2008 準拠の単精度 (binary32) 浮動小数点数 (最大 9 桁の精度) であるためです。This is because Single is an IEEE 754-2008-compliant single-precision (binary32) floating point number that gives up to nine significant digits of precision. パフォーマンス上の理由から、"R" 書式指定子の代わりにこちらを使用することをお勧めします。For performance reasons, we recommend its use instead of the "R" format specifier.

結果文字列は、現在の NumberFormatInfo オブジェクトの書式情報に影響されます。The result string is affected by the formatting information of the current NumberFormatInfo object. 結果文字列の書式を制御する NumberFormatInfo のプロパティの一覧を次の表に示します。The following table lists the NumberFormatInfo properties that control the formatting of the result string.

NumberFormatInfo のプロパティNumberFormatInfo property 説明Description
NegativeSign 数値が負であることを示す文字列を定義します。Defines the string that indicates that a number is negative.
NumberDecimalSeparator 整数部と小数部を区切る文字列を定義します。Defines the string that separates integral digits from decimal digits.
PositiveSign 指数部が正であることを示す文字列を定義します。Defines the string that indicates that an exponent is positive.

次の例では、一般書式指定子を使って、さまざまな浮動小数点値の書式を設定します。The following example formats assorted floating-point values with the general format specifier.

double number;

number = 12345.6789;      
Console::WriteLine(number.ToString("G", CultureInfo::InvariantCulture));
// Displays  12345.6789
Console::WriteLine(number.ToString("G", 
                  CultureInfo::CreateSpecificCulture("fr-FR")));
// Displays 12345,6789
                        
Console::WriteLine(number.ToString("G7", CultureInfo::InvariantCulture));
// Displays 12345.68 

number = .0000023;
Console::WriteLine(number.ToString("G", CultureInfo::InvariantCulture));
// Displays 2.3E-06       
Console::WriteLine(number.ToString("G", 
                  CultureInfo::CreateSpecificCulture("fr-FR")));
// Displays 2,3E-06

number = .0023;
Console::WriteLine(number.ToString("G", CultureInfo::InvariantCulture));
// Displays 0.0023

number = 1234;
Console::WriteLine(number.ToString("G2", CultureInfo::InvariantCulture));
// Displays 1.2E+03

number = Math::PI;
Console::WriteLine(number.ToString("G5", CultureInfo::InvariantCulture));
// Displays 3.1416    
double number;

number = 12345.6789;      
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays  12345.6789
Console.WriteLine(number.ToString("G", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 12345,6789
                        
Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture));
// Displays 12345.68 

number = .0000023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 2.3E-06       
Console.WriteLine(number.ToString("G", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 2,3E-06

number = .0023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 0.0023

number = 1234;
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture));
// Displays 1.2E+03

number = Math.PI;
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture));
// Displays 3.1416    
Dim number As Double

number = 12345.6789      
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays  12345.6789
Console.WriteLine(number.ToString("G", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 12345,6789
                        
Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture))
' Displays 12345.68 

number = .0000023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 2.3E-06       
Console.WriteLine(number.ToString("G", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 2,3E-06

number = .0023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 0.0023

number = 1234
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture))
' Displays 1.2E+03

number = Math.Pi
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture))
' Displays 3.1416    

表のトップへBack to table

数値 ("N") 書式指定子The Numeric ("N") Format Specifier

"N" (Numeric: 数値) は、数値を "-d,ddd,ddd.ddd…" という形式の文字列に変換する書式指定子です。"-" は負数記号を示し (必要な場合)、"d" は数字 (0 ~ 9) を示し、"," は桁区切り記号を示し、"." は小数点記号を示します。The numeric ("N") format specifier converts a number to a string of the form "-d,ddd,ddd.ddd…", where "-" indicates a negative number symbol if required, "d" indicates a digit (0-9), "," indicates a group separator, and "." indicates a decimal point symbol. 精度指定子は、小数部の桁数を示します。The precision specifier indicates the desired number of digits after the decimal point. 精度指定子を省略すると、現在の NumberFormatInfo.NumberDecimalDigits プロパティによって小数部の桁数が定義されます。If the precision specifier is omitted, the number of decimal places is defined by the current NumberFormatInfo.NumberDecimalDigits property.

結果文字列は、現在の NumberFormatInfo オブジェクトの書式情報に影響されます。The result string is affected by the formatting information of the current NumberFormatInfo object. 結果文字列の書式を制御する NumberFormatInfo のプロパティの一覧を次の表に示します。The following table lists the NumberFormatInfo properties that control the formatting of the result string.

NumberFormatInfo のプロパティNumberFormatInfo property 説明Description
NegativeSign 数値が負であることを示す文字列を定義します。Defines the string that indicates that a number is negative.
NumberNegativePattern 負の値の書式を定義し、かっこと NegativeSign プロパティのどちらによって負の符号が表されるかを指定します。Defines the format of negative values, and specifies whether the negative sign is represented by parentheses or the NegativeSign property.
NumberGroupSizes 桁区切り記号の間の桁数を定義します。Defines the number of integral digits that appear between group separators.
NumberGroupSeparator 整数の桁を区切る文字列を定義します。Defines the string that separates groups of integral numbers.
NumberDecimalSeparator 整数部と小数部を区切る文字列を定義します。Defines the string that separates integral and decimal digits.
NumberDecimalDigits 既定の小数点以下桁数を定義します。Defines the default number of decimal digits. この値は、精度指定子を使用してオーバーライドできます。This value can be overridden by using a precision specifier.

次の例では、数値書式指定子を使って、さまざまな浮動小数点値の書式を設定します。The following example formats assorted floating-point values with the number format specifier.

double dblValue = -12445.6789;
Console::WriteLine(dblValue.ToString("N", CultureInfo::InvariantCulture));
// Displays -12,445.68
Console::WriteLine(dblValue.ToString("N1", 
                  CultureInfo::CreateSpecificCulture("sv-SE")));
// Displays -12 445,7

int intValue = 123456789;
Console::WriteLine(intValue.ToString("N1", CultureInfo::InvariantCulture));
// Displays 123,456,789.0 
double dblValue = -12445.6789;
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture));
// Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1", 
                  CultureInfo.CreateSpecificCulture("sv-SE")));
// Displays -12 445,7

int intValue = 123456789;
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture));
// Displays 123,456,789.0 
Dim dblValue As Double = -12445.6789
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture))
' Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1", _
                  CultureInfo.CreateSpecificCulture("sv-SE")))
' Displays -12 445,7

Dim intValue As Integer = 123456789
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture))
' Displays 123,456,789.0 

表のトップへBack to table

パーセント ("P") 書式指定子The Percent ("P") Format Specifier

パーセント ("P") 書式指定子は、数値に 100 を掛けて、パーセントを表す文字列に変換します。The percent ("P") format specifier multiplies a number by 100 and converts it to a string that represents a percentage. 精度指定子は、小数部の桁数を示します。The precision specifier indicates the desired number of decimal places. 精度指定子を省略すると、現在の PercentDecimalDigits プロパティによって指定される既定の桁数が使用されます。If the precision specifier is omitted, the default numeric precision supplied by the current PercentDecimalDigits property is used.

返される文字列の書式を制御する NumberFormatInfo のプロパティの一覧を次の表に示します。The following table lists the NumberFormatInfo properties that control the formatting of the returned string.

NumberFormatInfo のプロパティNumberFormatInfo property 説明Description
PercentPositivePattern 正の値のパーセント記号の位置を定義します。Defines the placement of the percent symbol for positive values.
PercentNegativePattern 負の値のパーセント記号と負の符号の位置を定義します。Defines the placement of the percent symbol and the negative symbol for negative values.
NegativeSign 数値が負であることを示す文字列を定義します。Defines the string that indicates that a number is negative.
PercentSymbol パーセント記号を定義します。Defines the percent symbol.
PercentDecimalDigits パーセント値の既定の小数点以下桁数を定義します。Defines the default number of decimal digits in a percentage value. この値は、精度指定子を使用してオーバーライドできます。This value can be overridden by using the precision specifier.
PercentDecimalSeparator 整数部と小数部を区切る文字列を定義します。Defines the string that separates integral and decimal digits.
PercentGroupSeparator 整数の桁を区切る文字列を定義します。Defines the string that separates groups of integral numbers.
PercentGroupSizes 桁を何桁ごとに区切るかを定義します。Defines the number of integer digits that appear in a group.

次の例では、パーセント書式指定子を使って、浮動小数点値の書式を設定します。The following example formats floating-point values with the percent format specifier.

double number = .2468013;
Console::WriteLine(number.ToString("P", CultureInfo::InvariantCulture));
// Displays 24.68 %
Console::WriteLine(number.ToString("P", 
                  CultureInfo::CreateSpecificCulture("hr-HR")));
// Displays 24,68%     
Console::WriteLine(number.ToString("P1", CultureInfo::InvariantCulture));
// Displays 24.7 %
double number = .2468013;
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture));
// Displays 24.68 %
Console.WriteLine(number.ToString("P", 
                  CultureInfo.CreateSpecificCulture("hr-HR")));
// Displays 24,68%     
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture));
// Displays 24.7 %
Dim number As Double = .2468013
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture))
' Displays 24.68 %
Console.WriteLine(number.ToString("P", _
                  CultureInfo.CreateSpecificCulture("hr-HR")))
' Displays 24,68%     
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture))
' Displays 24.7 %

表のトップへBack to table

ラウンドトリップ ("R") 書式指定子The Round-trip ("R") Format Specifier

ラウンド トリップ ("R") 書式指定子は、文字列に変換された数値が解析され、同じ数値に戻るように試行します。The round-trip ("R") format specifier attempts to ensure that a numeric value that is converted to a string is parsed back into the same numeric value. この書式指定は、Single 型、Double 型、および BigInteger 型でだけサポートされています。This format is supported only for the Single, Double, and BigInteger types.

Double 値の場合、"R" 書式指定子で元の値を適切にラウンド トリップできないことがあります。For Double values, the "R" format specifier in some cases fails to successfully round-trip the original value. Double 値と Single 値の場合、パフォーマンスが比較的低いこともあります。For both Double and Single values, it also offers relatively poor performance. 値を適切にラウンドトリップするには、Double 値に "G17" 書式指定子を使用し、Single 値に "G9" 書式指定子を使用することをお勧めします。Instead, we recommend that you use the "G17" format specifier for Double values and the "G9" format specifier to successfully round-trip Single values.

この指定子を使用して BigInteger 値の書式を設定すると、その文字列形式に BigInteger 値の有効桁数がすべて含まれます。When a BigInteger value is formatted using this specifier, its string representation contains all the significant digits in the BigInteger value.

精度指定子は、指定できますが無視されます。Although you can include a precision specifier, it is ignored. ラウンドトリップ指定子と精度指定子の両方を指定すると、ラウンドトリップ指定子が優先されます。Round trips are given precedence over precision when using this specifier.
結果文字列は、現在の NumberFormatInfo オブジェクトの書式情報に影響されます。The result string is affected by the formatting information of the current NumberFormatInfo object. 結果文字列の書式を制御する NumberFormatInfo のプロパティの一覧を次の表に示します。The following table lists the NumberFormatInfo properties that control the formatting of the result string.

NumberFormatInfo のプロパティNumberFormatInfo property 説明Description
NegativeSign 数値が負であることを示す文字列を定義します。Defines the string that indicates that a number is negative.
NumberDecimalSeparator 整数部と小数部を区切る文字列を定義します。Defines the string that separates integral digits from decimal digits.
PositiveSign 指数部が正であることを示す文字列を定義します。Defines the string that indicates that an exponent is positive.

次の例では、ラウンドトリップ書式指定子を使って BigInteger 値の書式を設定します。The following example formats a BigInteger value with the round-trip format specifier.

#using <System.Numerics.dll>

using namespace System;
using namespace System::Numerics;

void main()
{ 
   BigInteger value = BigInteger::Pow(Int64::MaxValue, 2);
   Console::WriteLine(value.ToString("R"));
}
// The example displays the following output:
//      85070591730234615847396907784232501249  


using System;
using System.Numerics;

public class Example
{
   public static void Main()
   { 
      var value = BigInteger.Pow(Int64.MaxValue, 2);
      Console.WriteLine(value.ToString("R"));
   }
}                                                                                        // The example displays the following output:
//      85070591730234615847396907784232501249  


Imports System.Numerics

Module Example
   Public Sub Main()
      Dim value = BigInteger.Pow(Int64.MaxValue, 2)
      Console.WriteLine(value.ToString("R"))
   End Sub
End Module
' The example displays the following output:
'      85070591730234615847396907784232501249  

重要

場合によっては、/platform:x64 スイッチまたは /platform:anycpu スイッチを使用してコンパイルして 64 ビット システムで実行すると、"R" 標準の数値書式指定文字列で書式設定される Double 値のラウンドトリップに失敗することがあります。In some cases, Double values formatted with the "R" standard numeric format string do not successfully round-trip if compiled using the /platform:x64 or /platform:anycpu switches and run on 64-bit systems. 詳細については、次の段落を参照してください。See the following paragraph for more information.

/platform:x64 スイッチまたは /platform:anycpu スイッチを使用してコンパイルして 64 ビット システムで実行すると、「R」標準の数値書式指定文字列を使用して書式設定される Double 値のラウンドトリップが失敗するという問題を回避するために、Double 値を「G17」標準の数値書式指定文字列を使用して書式設定することができます。To work around the problem of Double values formatted with the "R" standard numeric format string not successfully round-tripping if compiled using the /platform:x64 or /platform:anycpu switches and run on 64-bit systems., you can format Double values by using the "G17" standard numeric format string. 次の例では、ラウンドトリップに失敗する Double 値を持つ "R" 書式指定文字列を使用しています。元の値のラウンドトリップに成功する "G17" 書式指定文字列も使用しています。The following example uses the "R" format string with a Double value that does not round-trip successfully, and also uses the "G17" format string to successfully round-trip the original value.

using System;
using System.Globalization;

public class Example
{
   static void Main(string[] args)
   {
      Console.WriteLine("Attempting to round-trip a Double with 'R':");
      double initialValue = 0.6822871999174;
      string valueString = initialValue.ToString("R",
                                                 CultureInfo.InvariantCulture);
      double roundTripped = double.Parse(valueString,
                                         CultureInfo.InvariantCulture);
      Console.WriteLine("{0:R} = {1:R}: {2}\n",
                        initialValue, roundTripped, initialValue.Equals(roundTripped));

      Console.WriteLine("Attempting to round-trip a Double with 'G17':");
      string valueString17 = initialValue.ToString("G17",
                                                   CultureInfo.InvariantCulture);
      double roundTripped17 = double.Parse(valueString17,
                                           CultureInfo.InvariantCulture);
      Console.WriteLine("{0:R} = {1:R}: {2}\n",
                        initialValue, roundTripped17, initialValue.Equals(roundTripped17));
   }
}
// If compiled to an application that targets anycpu or x64 and run on an x64 system,
// the example displays the following output:
//       Attempting to round-trip a Double with 'R':
//       0.6822871999174 = 0.68228719991740006: False
//
//       Attempting to round-trip a Double with 'G17':
//       0.6822871999174 = 0.6822871999174: True
Imports System.Globalization

Module Example
   Public Sub Main()
      Console.WriteLine("Attempting to round-trip a Double with 'R':")
      Dim initialValue As Double = 0.6822871999174
      Dim valueString As String = initialValue.ToString("R",
                                               CultureInfo.InvariantCulture)
      Dim roundTripped As Double = Double.Parse(valueString,
                                                CultureInfo.InvariantCulture)
      Console.WriteLine("{0:R} = {1:R}: {2}",
                        initialValue, roundTripped, initialValue.Equals(roundTripped))
      Console.WriteLine()
      
      Console.WriteLine("Attempting to round-trip a Double with 'G17':")
      Dim valueString17 As String = initialValue.ToString("G17",
                                                 CultureInfo.InvariantCulture)
      Dim roundTripped17 As Double = double.Parse(valueString17,
                                            CultureInfo.InvariantCulture)
      Console.WriteLine("{0:R} = {1:R}: {2}",
                        initialValue, roundTripped17, initialValue.Equals(roundTripped17))
   End Sub
End Module
' If compiled to an application that targets anycpu or x64 and run on an x64 system,
' the example displays the following output:
'       Attempting to round-trip a Double with 'R':
'       0.6822871999174 = 0.68228719991740006: False
'
'       Attempting to round-trip a Double with 'G17':
'       0.6822871999174 = 0.6822871999174: True

表のトップへBack to table

16 進数 ("X") 書式指定子The Hexadecimal ("X") Format Specifier

16 進数 ("X") 書式指定子は、16 進数文字列に数値を変換します。The hexadecimal ("X") format specifier converts a number to a string of hexadecimal digits. 書式指定子の大文字と小文字によって、9 よりも大きい 16 進数値を示すアルファベット文字が大文字と小文字のどちらで表示されるかが決まります。The case of the format specifier indicates whether to use uppercase or lowercase characters for hexadecimal digits that are greater than 9. たとえば、"X" を指定すると "ABCDEF" となり、"x" を指定すると "abcdef" となります。For example, use "X" to produce "ABCDEF", and "x" to produce "abcdef". この書式指定は整数型でだけサポートされています。This format is supported only for integral types.

精度指定子は、変換後の文字列の最小桁数を示します。The precision specifier indicates the minimum number of digits desired in the resulting string. 必要に応じて、精度指定子によって指定された桁数に達するまで、数値の左側にゼロが埋め込まれます。If required, the number is padded with zeros to its left to produce the number of digits given by the precision specifier.

結果文字列は、現在の NumberFormatInfo オブジェクトの書式情報に影響されません。The result string is not affected by the formatting information of the current NumberFormatInfo object.

次の例では、16 進数の書式指定子を使って Int32 値の書式を設定します。The following example formats Int32 values with the hexadecimal format specifier.

int value; 

value = 0x2045e;
Console::WriteLine(value.ToString("x"));
// Displays 2045e
Console::WriteLine(value.ToString("X"));
// Displays 2045E
Console::WriteLine(value.ToString("X8"));
// Displays 0002045E

value = 123456789;
Console::WriteLine(value.ToString("X"));
// Displays 75BCD15
Console::WriteLine(value.ToString("X2"));
// Displays 75BCD15
int value; 

value = 0x2045e;
Console.WriteLine(value.ToString("x"));
// Displays 2045e
Console.WriteLine(value.ToString("X"));
// Displays 2045E
Console.WriteLine(value.ToString("X8"));
// Displays 0002045E

value = 123456789;
Console.WriteLine(value.ToString("X"));
// Displays 75BCD15
Console.WriteLine(value.ToString("X2"));
// Displays 75BCD15
Dim value As Integer 

value = &h2045e
Console.WriteLine(value.ToString("x"))
' Displays 2045e
Console.WriteLine(value.ToString("X"))
' Displays 2045E
Console.WriteLine(value.ToString("X8"))
' Displays 0002045E

value = 123456789
Console.WriteLine(value.ToString("X"))
' Displays 75BCD15
Console.WriteLine(value.ToString("X2"))
' Displays 75BCD15

表のトップへBack to table

メモNotes

コントロール パネルの設定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, which provides values used to govern formatting. コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。Computers that use different settings generate different result strings.

また、CultureInfo.CultureInfo(String) コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい CultureInfo オブジェクトをインスタンス化した場合、コントロール パネルの [地域と言語のオプション] 項目で設定されたカスタマイズが新しい CultureInfo オブジェクトに適用されます。In addition, if the CultureInfo.CultureInfo(String) constructor is used 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.

NumberFormatInfo のプロパティNumberFormatInfo Properties

書式設定は、現在の NumberFormatInfo オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または書式設定を実行するメソッドの IFormatProvider パラメーターによって明示的に指定されます。Formatting is influenced by the properties of the current NumberFormatInfo object, which is provided implicitly by the current thread culture or explicitly by the IFormatProvider parameter of the method that invokes formatting. このパラメーターには、NumberFormatInfo オブジェクトまたは CultureInfo オブジェクトを指定してください。Specify a NumberFormatInfo or CultureInfo object for that parameter.

注意

数値の書式設定に使用するパターンまたは文字列のカスタマイズの詳細については、NumberFormatInfo クラスに関するトピックを参照してください。For information about customizing the patterns or strings used in formatting numeric values, see the NumberFormatInfo class topic.

整数数値型と浮動小数点数値型Integral and Floating-Point Numeric Types

標準の数値書式指定子の記述で、整数数値型または浮動小数点数値型が参照されている場合があります。Some descriptions of standard numeric format specifiers refer to integral or floating-point numeric types. 整数数値型には、ByteSByteInt16Int32Int64UInt16UInt32UInt64、および BigInteger があります。The integral numeric types are Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, and BigInteger. 浮動小数点数値型には、DecimalSingle、および Double があります。The floating-point numeric types are Decimal, Single, and Double.

浮動小数点の無限大値と 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 that is specified by the currently applicable NumberFormatInfo object.

Example

注意

この記事の C# 例は、Try.NET インライン コード ランナーとプレイグラウンドで実行されます。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. 変更後のコードが対話型ウィンドウで実行されるか、コンパイルできなかった場合、対話型ウィンドウにすべての C# コンパイラ エラー メッセージが表示されます。The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

次の例では、en-US カルチャおよびすべての標準数値書式指定子を使用して、整数値と浮動小数点数値を書式設定します。The following example formats an integral and a floating-point numeric value using the en-US culture and all the standard numeric format specifiers. この例では 2 つの特定の数値型 (Double および Int32) を使用していますが、他の数値基本型 (ByteSByteInt16Int32Int64UInt16UInt32UInt64BigIntegerDecimal、および Single) でも類似した結果が得られます。This example uses two particular numeric types (Double and Int32), but would yield similar results for any of the other numeric base types (Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, BigInteger, Decimal, and Single).

using System;
using System.Globalization;
using System.Threading;

public class NumericFormats
{
   public static void Main()
   {
      // Display string representations of numbers for en-us culture
      CultureInfo ci = new CultureInfo("en-us");
      
      // Output floating point values
      double floating = 10761.937554;
      Console.WriteLine("C: {0}", 
              floating.ToString("C", ci));           // Displays "C: $10,761.94"
      Console.WriteLine("E: {0}", 
              floating.ToString("E03", ci));         // Displays "E: 1.076E+004"
      Console.WriteLine("F: {0}", 
              floating.ToString("F04", ci));         // Displays "F: 10761.9376"         
      Console.WriteLine("G: {0}",  
              floating.ToString("G", ci));           // Displays "G: 10761.937554"
      Console.WriteLine("N: {0}", 
              floating.ToString("N03", ci));         // Displays "N: 10,761.938"
      Console.WriteLine("P: {0}", 
              (floating/10000).ToString("P02", ci)); // Displays "P: 107.62 %"
      Console.WriteLine("R: {0}", 
              floating.ToString("R", ci));           // Displays "R: 10761.937554"            
      Console.WriteLine();
      
      // Output integral values
      int integral = 8395;
      Console.WriteLine("C: {0}", 
              integral.ToString("C", ci));           // Displays "C: $8,395.00"
      Console.WriteLine("D: {0}", 
              integral.ToString("D6", ci));          // Displays "D: 008395" 
      Console.WriteLine("E: {0}", 
              integral.ToString("E03", ci));         // Displays "E: 8.395E+003"
      Console.WriteLine("F: {0}", 
              integral.ToString("F01", ci));         // Displays "F: 8395.0"    
      Console.WriteLine("G: {0}",  
              integral.ToString("G", ci));           // Displays "G: 8395"
      Console.WriteLine("N: {0}", 
              integral.ToString("N01", ci));         // Displays "N: 8,395.0"
      Console.WriteLine("P: {0}", 
              (integral/10000.0).ToString("P02", ci)); // Displays "P: 83.95 %"
      Console.WriteLine("X: 0x{0}", 
              integral.ToString("X", ci));           // Displays "X: 0x20CB"
      Console.WriteLine();
   }
}
Option Strict On

Imports System.Globalization
Imports System.Threading

Module NumericFormats
   Public Sub Main()
      ' Display string representations of numbers for en-us culture
      Dim ci As New CultureInfo("en-us")
      
      ' Output floating point values
      Dim floating As Double = 10761.937554
      Console.WriteLine("C: {0}", _
              floating.ToString("C", ci))           ' Displays "C: $10,761.94"
      Console.WriteLine("E: {0}", _
              floating.ToString("E03", ci))         ' Displays "E: 1.076E+004"
      Console.WriteLine("F: {0}", _
              floating.ToString("F04", ci))         ' Displays "F: 10761.9376"         
      Console.WriteLine("G: {0}", _ 
              floating.ToString("G", ci))           ' Displays "G: 10761.937554"
      Console.WriteLine("N: {0}", _
              floating.ToString("N03", ci))         ' Displays "N: 10,761.938"
      Console.WriteLine("P: {0}", _
              (floating/10000).ToString("P02", ci)) ' Displays "P: 107.62 %"
      Console.WriteLine("R: {0}", _
              floating.ToString("R", ci))           ' Displays "R: 10761.937554"            
      Console.WriteLine()
      
      ' Output integral values
      Dim integral As Integer = 8395
      Console.WriteLine("C: {0}", _
              integral.ToString("C", ci))           ' Displays "C: $8,395.00"
      Console.WriteLine("D: {0}", _
              integral.ToString("D6"))              ' Displays "D: 008395" 
      Console.WriteLine("E: {0}", _
              integral.ToString("E03", ci))         ' Displays "E: 8.395E+003"
      Console.WriteLine("F: {0}", _
              integral.ToString("F01", ci))         ' Displays "F: 8395.0"    
      Console.WriteLine("G: {0}", _ 
              integral.ToString("G", ci))           ' Displays "G: 8395"
      Console.WriteLine("N: {0}", _
              integral.ToString("N01", ci))         ' Displays "N: 8,395.0"
      Console.WriteLine("P: {0}", _
              (integral/10000).ToString("P02", ci)) ' Displays "P: 83.95 %"
      Console.WriteLine("X: 0x{0}", _
              integral.ToString("X", ci))           ' Displays "X: 0x20CB"
      Console.WriteLine()
   End Sub
End Module

参照See Also

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