この解析メソッドのオーバーロードを使用して、文字列を double 値に解析しようとしています。
double.Parse("198.222213745118", CultureInfo.CurrentUICulture);
CultureInfo.CurrentUICulture は fr-FR です。しかし、これは FormatException タイプの例外をスローしています。
その理由は何ですか?
この解析メソッドのオーバーロードを使用して、文字列を double 値に解析しようとしています。
double.Parse("198.222213745118", CultureInfo.CurrentUICulture);
CultureInfo.CurrentUICulture は fr-FR です。しかし、これは FormatException タイプの例外をスローしています。
その理由は何ですか?
フランス語 (すなわちfr-FR
) は、ピリオドではなく、コンマを使用して小数部分の開始を示します。彼らはピリオドを使用して数千を区切ります。
この質問は古いことは知っていますが、私の答えは他の人に役立つかもしれません。これが答えです:
double.Parse("198.222213745118", System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);
それ以外の
double.Parse("198.222213745118", CultureInfo.CurrentUICulture);
.Parse ではなく Double.TryParse を使用することをお勧めします。使用する方が安全であり、解析時に例外が発生しないようにするためです。
使用するコードは次のとおりです。
double answer = -1;
Double.TryParse("Value", out answer);
あとは、文字列を実際に解析したかどうかを確認する条件ステートメントを実行するだけです。