C#は小数点科学表記の文字列に変換されます際に回避する方法

C#であまりにも多くの数字は小数点の後、C#は、科学的表記法を使用するフロート、ダブル値、小数型は、小数点以下の値を表現する場合。

例えば、二重0.00009以下のタイプのは、我々は、それがなるであろう直接、toString()メソッドは、文字列を変換するためにそれを使用する場合のみ、10進整数のビットが0で科学的表記になりさ9E-05(今の科学的表記法問題、例えば1.00009変換されていない、toString()メソッド)は、科学的表記法であります

二重番号= 0.00009 ;
ストリング defaultNumber =にNumber.toString()。// 9E-05

 

だから我々は、C#で、科学的表記を避けるために、文の文字列変換後の形式を表示することができます。

使用してシステムを。

名前空間NetCoreFloat 
{ 
    クラスプログラム
    { 
        静的 ボイドメイン(文字列[]引数)
        { 
            二重番号= 0.00009 ストリング defaultNumber =にNumber.toString()。// 9E-05 

             numberFromToString =にNumber.toString(" N5 ")。// 0.00009 

             numberFromStringFormat = ストリング .Format(" {0:F5} "、数)。// 0.00009

            Console.WriteLineを(終了する任意のキーを押してください... ); 
            Console.ReadKey(); 
        } 
    } 
}

上記のコードは可能ですが、文字列が科学表記を10進数に変換されていない、我々が変換の精度が失われないことを確認するためには、正確にどのように多くの小数点以下の桁、小数点以下を知っている必要があることは明らかです。

 

我々は精度フォーマットが小さすぎる設定されている変換する場合は、次のように、それは、精度の損失が発生します。

使用してシステムを。

名前空間NetCoreFloat 
{ 
    クラスプログラム
    { 
        静的 ボイドメイン(文字列[]引数)
        { 
            二重番号= 0.00009 ストリング defaultNumber =にNumber.toString()。// 9E-05 

             numberFromToString =にNumber.toString(" N3 ")。// 0.000 

            文字列 numberFromStringFormat = ストリング .Format(" {0:F3} "、数)。// 0.000

            Console.WriteLineを(終了する任意のキーを押してください... ); 
            Console.ReadKey(); 
        } 
    } 
}

 

我々はあまりにも大きなフォーマットの変換精度を設定した場合は、次のように、過剰は、最後の端数に0が生成されます。

使用してシステムを。

名前空間NetCoreFloat 
{ 
    クラスプログラム
    { 
        静的 ボイドメイン(文字列[]引数)
        { 
            二重番号= 0.00009 ストリング defaultNumber =にNumber.toString()。// 9E-05 

             numberFromToString =にNumber.toString(" N10 ")。// 0.0000900000 

             numberFromStringFormat = ストリング .Format(" {0:F10} "、数)。// 0.0000900000

            Console.WriteLineを(終了する任意のキーを押してください... ); 
            Console.ReadKey(); 
        } 
    } 
}

 

次のように我々は、変換形式で#文字を使用する必要があり、この点では、#文字は、最後の小数に余分な0を生成しません。

使用してシステムを。

名前空間NetCoreFloat 
{ 
    クラスプログラム
    { 
        静的 ボイドメイン(文字列[]引数)
        { 
            二重番号= 0.00009 

            ストリング numberFromToString =にNumber.toString(" 0 ##### ")。// 0.00009 
            numberFromToString =にNumber.toString(" 0 ########## ")。// 0.00009 
 = 100.00009 ; 
            numberFromToString =にNumber.toString(" 0 #####。"); // 100.00009 
            numberFromToString =にNumber.toString(" 0 ########## ")。// 100.00009 

            ます。Console.WriteLine(" 終了する任意のキーを押してください... " ); 
            Console.ReadKey(); 
        } 
    } 
}

実際には、我々は最大#339文字を宣言することができますので、あなたはすべての小数が正しく文字列に変換できるようにすることができます:

使用してシステムを。

名前空間NetCoreFloat 
{ 
    クラスプログラム
    { 
        静的 ボイドメイン(文字列[]引数)
        { 
            二重番号= 0.00009 

            文字列 numberFromToString =にNumber.toString(" 0 " + 新しい 文字列' '339)); // 0.00009 

            ます。Console.WriteLine(" 終了する任意のキーを押してください... " ); 
            Console.ReadKey(); 
        }
    } 
}

 

使用する方が便利になりますので、我々はまた、339#は、文字列定数DoubleFixedPointとして宣言され、クラスFormatStringsを宣言することができます。

使用してシステムを。

名前空間NetCoreFloat 
{ 
    パブリック 静的 クラスFormatStrings 
    { 
        公共 のconst  文字列 DoubleFixedPoint = " 0。################################## ################################################## ################################################## ################################################## ################################################## ################################################## ################################################## ##### " ; 
    } 

    クラスのプログラム
    { 
        静的な 無効メイン(文字列[]引数)
        { 
            二重番号= 0.00009 

            ストリング numberFromToString =にNumber.toString(FormatStrings.DoubleFixedPoint)。// 0.00009 

            ます。Console.WriteLine(" 終了する任意のキーを押してください... " ); 
            Console.ReadKey(); 
        } 
    } 
}

 

 

参考文献:

C#で科学表記せずに数値を文字列に変換します

科学表記のない文字列への変換ダブル

 

おすすめ

転載: www.cnblogs.com/OpenCoder/p/10938017.html