2011-08-01 1 views
2

標準の数値書式 "G"を修正して、数字に2つ以上のゼロが含まれている場合に指数が使用されるようにすることはできますか?小数点以下桁数そうでない場合は、別の解決策が認められるでしょう。数値が少なくとも2つのゼロdpを含む場合にC#の "G"文字列フォーマッタを変更する

出力は0.132640216843058

であるべきであるため、私も0.1326402168430582のように、二重フォーマットする必要がためので、私は「E」フォーマッタを使用することはできませんConsole.WriteLine("{0:G}", -0.001960231155763821);出力1.96023115576382E-03

指数が「G」で使用されているようです数値に小数点以下4桁以上のゼロが含まれる場合のフォーマッタConsole.WriteLine("{0:G}", 0.000023);出力2.3E-05

+0

ヒント:「標準」の書式設定では、変更できないことが示唆される傾向があります。 –

+0

IFormatProvider.GetFormat()のMSDNライブラリ記事の例を確認してください。 –

答えて

1

拡張メソッドを書くことができます。 Bellowは、LINQPadでコピー&ペーストして実行できるコードです。 Dump()メソッドはLINQPad拡張メソッドです。したがって、コードをVSにコピーする場合は、無視してください。

void Main() 
{ 
    var x = -0.00160231155763821; 
    var x2 = 0.099; 
    var x3 = -0.001; 

    x.G2Format().Dump("x"); 
    x2.G2Format().Dump("x2"); 
    x3.G2Format().Dump("x3"); 
} 

public static class Extensions 
{ 
    public static string G2Format(this double value) 
    { 
     var format = (0.01 > value) ? "{0:e}" : "{0:G}"; 
     return string.Format(format, value); 
    } 
} 

それはあなたにこの結果を与えるだろう。

x 
-1.602312e-003 

x2 
0.099 

x3 
-1.000000e-003 

は、あなたが探しているものということですか?

関連する問題