1

次の文字列があります: "3.39112632978e+001" これを float に変換する必要があります。WolframAlpha は、この値の結果が 33.9112632978 であることを示しています。

Single.Parse("3.39112632978e+001") gives 3.39112624E+12

Double.Parse("3.39112632978e+001") gives 3391126329780.0

float.Parse("3.39112632978e+001") gives 3.39112624E+12

私は何をすべきか?

4

2 に答える 2

3

.が小数点記号ではなく千単位記号として解釈されるローカライズの問題が発生しています。あなたはヨーロッパにいますか?

これを試して:

float f = Single.Parse("3.39112632978e+001", CultureInfo.InvariantCulture);
Console.WriteLine(f);

出力:

33.91126

.を aに置き換えると、,発生している動作が表示されることに注意してください。

float g = Single.Parse("3,39112632978e+001", CultureInfo.InvariantCulture);
Console.WriteLine(g);

出力:

3.391126E+12

これは、ローカリゼーションの問題が発生しているという私の信念を裏付けています。

于 2010-02-10T15:55:30.780 に答える
3

このスレッドはあなたの質問にヒントを与えると思います: http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/e482cda0-6510-4d2c-b830-11e57e04f65dここにあるもの - の解釈System.Globalization.NumberStyles.Float方法が変わります).

于 2010-02-10T15:48:30.743 に答える