C#の指数表記「E」形式指定子の使い方をわかりやすく解説
C#における指数("E")形式指定子は、数値を科学的記数法(指数表記)の文字列に変換するための標準書式指定子です。大きな数値や小さな数値を読みやすく表現したい場合に非常に便利です。
出力形式
"E" 形式指定子を使用すると、数値は次のような形式の文字列に変換されます。
"-d.ddd…E+ddd"
または
"-d.ddd…e+ddd"
ここで、各要素の意味は以下のとおりです。
- "d" は 1 桁の数字(0〜9)を表します。
- 仮数部(小数点以下の桁数)は、指定子の後に続く精度指定子によって制御できます。
- 指数部には、大文字の "E" または小文字の "e" が接頭辞として付加されます。
つまり、"E" を指定すると大文字、"e" を指定すると小文字で指数部が出力されるという違いがあります。
コード例
実際に "E" および "e" 形式指定子を使ったサンプルコードを見てみましょう。
using System;
using System.Globalization;
class Demo {
static void Main() {
double d = 3452.7678;
Console.WriteLine(d.ToString("E", CultureInfo.InvariantCulture));
Console.WriteLine(d.ToString("E10", CultureInfo.InvariantCulture));
Console.WriteLine(d.ToString("e", CultureInfo.InvariantCulture));
Console.WriteLine(d.ToString("e10", CultureInfo.InvariantCulture));
}
}実行結果
3.452768E+003 3.4527678000E+003 3.452768e+003 3.4527678000e+003
解説
- d.ToString("E"):既定の精度(6 桁)で出力され、指数部は大文字の "E+003" となります。
- d.ToString("E10"):精度指定子として 10 を指定しているため、小数点以下が 10 桁で表示されます。
- d.ToString("e") / d.ToString("e10"):小文字の "e" を使うことで、指数部が "e+003" のように小文字で出力されます。
また、カルチャーによる書式の影響を受けないよう、例では CultureInfo.InvariantCulture を指定しています。これにより、小数点記号などが環境に依存せず、常に一貫した出力が得られます。
-
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