私はC#フォームアプリケーションを持っています。その機能の一部として、double型の値をファイルに文字列形式で書き込みます。そのうちのいくつかはdouble型です.Infinity。C#:Windows 10のConvert.ToDouble( 'Infinity')のフォーマット例外処理
ファイルからこれらの値を読み取り、それらを2重に戻すアプリケーションの別の部分があります。
値の部分をWindows 7で実行し、同じファイルをWindows 10で読み込んだ場合、 '無限大'の変換時にはフォーマット例外が発生します。デフォルトの(us-en)カルチャで使用されているシンボルがWindows 8と10の間で変更されたように見えます。
Convert.ToDouble()のインスタンスは多くあり、try-catchまたはdouble.tryParse()は、多くのプロジェクトで変更を必要とするため、実現可能な解決策ではありません。
この形式の例外の問題を回避するための回避策はありますか?事前に
おかげで、
カピル
まあ、それは時速爆弾でした。唯一の問題ではなく、小数点がカンマで書かれた境界線を越えてプログラムが動くとき、データはぎこちなくなります。 Parse/TryParseオーバーロードを使用するように解析コードを変更したくない場合は、必要に応じてNumberFormat引数を使用します。独自のカルチャでThread.CurrentCultureプロパティを変更する必要があります。好みのNegative/PositiveInfinitySymbol値を使用するカスタムNumberFormatInfoを使用します。 –
ありがとうHans。アプリケーションの初期化中に現在のカルチャがカスタマイズされている場合、予想される無限を一定に設定します。それは働いています。 –