本記事の概要
この記事では、標準数値書式指定子の使い方について説明します。
公式サイト情報はコチラを参照してください。
標準数値書式指定子
標準数値書式指定子は以下のものがあります。
書式指定子 | 説明 |
C または c | 通貨値 |
D または d | Decimal (10 進数型)。に応じて負の符号が付く整数 |
E または e | 指数表記 |
F または f | 固定小数点。結果: 必要に応じて負の符号が付く整数と小数。 |
G または g | 全般。固定小数点表記または指数表記のいずれかのより簡潔な形式。 |
N または n | 数値。必要に応じて負の符号が付く整数と小数、桁区切り記号、および小数点記号。 |
P または p | パーセント。数値に 100 を掛けて、パーセント記号を付けて表示します。 |
X または x | 16 進数文字列。 |
「C または c」通貨値
“C” または “c”を使用すると、通貨記号を付けて値を出力することができます。
どこの国の通貨で表示するかは CultureInfo を使用して設定をします。
また「C」の後ろに数値を指定すると、小数点以下の表示桁数を設定することができます。たとえば「C3」とすると小数点以下は3桁分表示します。
using System.Globalization; // ドル表記 NumberFormatInfo nfi1 = new CultureInfo("en-US", false).NumberFormat; Int64 amount1 = 1234567; Console.WriteLine(amount1.ToString("C", nfi1)); // 円表記 NumberFormatInfo nfi2 = new CultureInfo("ja-JP", false).NumberFormat; Int64 amount2 = 1234567; Console.WriteLine(amount2.ToString("C", nfi2)); // ドル表記 NumberFormatInfo nfi3 = new CultureInfo("en-US", false).NumberFormat; double amount3 = 123.4567; Console.WriteLine(amount3.ToString("C2", nfi3)); // 円表記 NumberFormatInfo nfi4 = new CultureInfo("ja-JP", false).NumberFormat; double amount4 = 123.4567; Console.WriteLine(amount4.ToString("C3", nfi4));
「Dまたは d」10進数
“D” または “d”を使用すると、10進数型を出力することができます。
また「D」の後ろに数値を指定して表示桁数を設定することができます。表示桁数に満たない場合は左側がゼロ埋めされます。
int amount1 = 12345; Console.WriteLine(amount1.ToString("D")); int amount2 = 12345; Console.WriteLine(amount2.ToString("D10"));
「E または e」指数
“E” または “e”を使用すると、数値を “d.ddd…E+ddd” または “-d.ddd…e+ddd” という形式の文字列に変換します。この “d” は 0 ~ 9 の 1桁の数字を示し、負の数値の場合は、変換後文字列の先頭にマイナス記号が挿入されます。 また、小数点の前には 必ず1 桁の数字が表示されます。
using System.Globalization; double value = 12345.6; Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture));
指数の精度の規定値は6桁です。ですので、1つ目を実行すると「1.234560E」のように小数部の桁数が6桁になります。
また「E10」の「10」のように数値を指定して、小数点以下の桁数を指定することもできます。
※ 例で使用しているCultureInfo.InvariantCulture はどのカルチャ(国)にも依存しないことを指しています。
「F または f」固定小数点
“F” または “f”を使用すると、小数点以下の表示桁数を固定することができます。
「F」の後ろに数値を指定することで表示桁数を設定することができます。「F」の後ろに数値を指定しなかった場合は、小数点以下は2桁表示されます。
以下に例を示します。
using System.Globalization; double value = 12345.678; Console.WriteLine(value.ToString("F", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("F0", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("F1", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("F2", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("F3", CultureInfo.InvariantCulture));
「G または g」一般書式指定子
「G」または「g」を使用すると、数値の型や、精度指定子が指定されているかどうかに応じて、固定小数点表記または指数表記の簡潔な形式に数値を自動的に変換します。
単に「G」を指定した時は、指定した値がそのまま表示されます。「G3」のように、小数点以下の桁数を指定した場合は、指数表記で出力されます。ただし、最初から整数の桁数が1桁である場合は指数表記されません。
using System.Globalization; double value = 12345.678; double value2 = .12345678; double value3 = 0.0000123; Console.WriteLine(value.ToString("G", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("G1", CultureInfo.InvariantCulture)); Console.WriteLine(value2.ToString("G", CultureInfo.InvariantCulture)); Console.WriteLine(value2.ToString("G3", CultureInfo.InvariantCulture)); Console.WriteLine(value3.ToString("G2", CultureInfo.InvariantCulture));
「N または n」数値書式指定子
「N」または「n」を使用すると、数値を “-d,ddd,ddd.ddd…” という形式の文字列に変換することができます。
「N10」のように、小数点以下の桁数を指定することもできます。単に「N」とした場合は、小数点以下は2桁で表示されます。
using System.Globalization; double value = 123456789.123456789; Console.WriteLine(value.ToString("N", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("N10", CultureInfo.InvariantCulture));
「P または p」パーセント
「P」または「p」を使用すると、数値に100を掛けてパーセント表記に変換することができます。
using System.Globalization; double value = 0.654; Console.WriteLine(value.ToString("P", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("P0", CultureInfo.InvariantCulture)); Console.WriteLine(value.ToString("P1", CultureInfo.InvariantCulture));
「X または x」16進数
「X」または「x」を使用すると、数値を16進数表記にすることができます。
「X」の後ろに数値を指定すると表示する桁数を指定することができ、桁数に満たない場合は左側が0埋めされます。
int value = 255; Console.WriteLine(value.ToString("X")); Console.WriteLine(value.ToString("X4"));
コメント