23

小数点以下の桁数が十分にある場合、.NET がデフォルトで科学表記法を使用するという素晴らしい「機能」に出くわしました。Double.ToString()

.005.ToString() // ".005"
.00005.ToString() // "5E-05" 

これを標準の(非科学的な)表記の文字列として表示する効率的な方法を知っている人はいますか?

私はこの質問Double.ToString()を見てきましたが、上位2つの回答は、どちらも行ってから結果を再フォーマットするだけなので、私にはハックのようです。

助けてくれてありがとう。

編集:

望ましい出力:

.00005.ToString() == ".00005"

EDIT2:

すべての重複投票とクローズ投票は何ですか? 質問の中で、同様の質問には満足のいく答えがないと具体的に言います。このウェブサイトの人々は、あまりにも幸せになります。

私の解決策:

誰にとっても役立つ場合:

/// <summary>
/// Converts the double to a standard notation string.
/// </summary>
/// <param name="d">The double to convert.</param>
/// <returns>The double as a standard notation string.</returns>
public static String ToStandardNotationString(this double d)
{
    //Keeps precision of double up to is maximum
    return d.ToString(".#####################################################################################################################################################################################################################################################################################################################################");

}

注: これは値が 1 より大きい場合にのみ機能します。すべての値に対してこれを行う効率的な方法はまだ見つかりません。

4

1 に答える 1

16

標準およびカスタム数値フォーマット文字列を参照してください。あなたが探していると思います".################"

.00005.ToString(".################") // returns ".00005"

はい、ややハックですが、小数点以下の桁数がそれを超えない限り、機能します。その場合、 a を使用して、文字列でStringBuilder約 3​​30 秒を構築することをお勧めし#ます ( double.EpsilonE-324 のオーダーです)。

于 2013-02-19T18:30:31.170 に答える