C#のパーセント(P)書式指定子の使い方を解説
C#におけるパーセント("P")書式指定子は、数値に100を掛けてパーセンテージ形式の文字列に変換するために使用されます。数値を「%」記号付きの文字列として表現できるため、割合や比率を表示する際に非常に便利です。
基本的な使い方
まず、次のようなdouble型の変数を用意します。
double val = .975746;
この変数に対して("P")書式指定子を適用すると、結果は以下のようになります。
97.57 %
同様に、("P1")を指定すると、小数点以下が1桁のみ表示されます。
97.6%
このように、Pの後ろに数字を付けることで、小数点以下の表示桁数を自由に制御できます。桁数を指定しない場合のデフォルトは2桁です。
サンプルコード
実際のコード例を見てみましょう。
using System;
using System.Globalization;
class Demo {
static void Main() {
double val = .975746;
Console.WriteLine(val.ToString("P", CultureInfo.InvariantCulture));
Console.WriteLine(val.ToString("P1", CultureInfo.InvariantCulture));
Console.WriteLine(val.ToString("P4", CultureInfo.InvariantCulture));
}
}実行結果
97.57 % 97.6 % 97.5746 %
ポイント解説
上記の例では、CultureInfo.InvariantCultureを使用しています。これにより、カルチャ(地域設定)に依存しない一貫した出力が得られます。カルチャによって小数点記号や%記号の位置が異なる場合があるため、国際的なアプリケーションではInvariantCultureの指定を検討するとよいでしょう。
また、ToString("P")メソッド以外にも、string.Formatや文字列補間($"{val:P}")でも同じ書式指定子を使用できます。用途に応じて使い分けることで、コードの可読性を高められます。
-
C#のラウンドトリップ(R)書式指定子とは?使い方を解説
ラウンドトリップ(R)書式指定子とはC#のラウンドトリップ(R)書式指定子は、Single、Double、BigInteger の各型でサポートされている標準の数値書式です。この書式指定子を使用すると、数値を文字列に変換した後、その文字列を再度解析(パース)した際に、必ず元と同じ数値に復元されることが保証されます。つまり、変換による精度の損失がないことが保証されるため、シリアライズやログ出力など、値を厳密に保持したい場面で役立ちます。基本的な使い方まず、double型の変数を用意します。double doubleVal = 0.91234582637;次に、ToString()メソッドを呼び出
-
C#でTimeSpanをhh:mm:ss形式にフォーマットする方法
C#では、TimeSpan構造体の値を「hh:mm:ss」形式で簡単にフォーマットして表示することができます。カスタム書式指定子を使えば、時間・分・秒を自由な形式で出力可能です。 TimeSpanの設定 まず、フォーマット対象となるTimeSpanオブジェクトを作成します。 TimeSpan ts = new TimeSpan(9, 15, 30); この例では、9時間15分30秒を表すTimeSpanを作成しています。 TimeSpanをフォーマットするには TimeSpanを「hh:mm:ss」形式でフォーマットするには、次のような書式指定文字列を使用します。 {0:hh\:mm\:ss