stringaから aを解析する必要がありdecimal、英国またはヨーロッパの文化で使用される可能性があります。
もしヨーロッパの文化2,00で2
ただし、2,00カンマは 1000 を表すため、英国の文化では無効です。
私が使用する場合
Double.Parse("20,50", new CultureInfo("en-GB"))
戻ります2050
これにより、無効な例外がスローされると予想していました。
誰でも助けることができますか?
stringaから aを解析する必要がありdecimal、英国またはヨーロッパの文化で使用される可能性があります。
もしヨーロッパの文化2,00で2
ただし、2,00カンマは 1000 を表すため、英国の文化では無効です。
私が使用する場合
Double.Parse("20,50", new CultureInfo("en-GB"))
戻ります2050
これにより、無効な例外がスローされると予想していました。
誰でも助けることができますか?
解析文字列内の有効な文字であるため、例外が発生することはありません(おっしゃる,とおり、千単位の区切り記号として解釈されます)。
ただし、2050ではなく、同じコードが表示され20.50ます。
その地域のコントロールパネルでそれらが手動で変更された場合にのみ、カルチャの結果がen-GB表示されると思います(したがって、誰かが小数点区切り記号を に設定し,、千単位区切り記号を ではないものに設定した場合,)。
ポイントは、GB 文化の「2,00」は無効であるべきですが、ヨーロッパの文化を使用していたように解析することです。
例外をスローしたい。
対照的に、Double.Parse("20.50", new CultureInfo("fr-FR")) は小数点以下が無効であるため例外をスローします。
では、Double.Parse("20,50", new CultureInfo("en-GB")) にこれが当てはまらないのはなぜですか
,更新された質問から、英国の文化で2,000は2000、 や. しかし、それは のようにもなり得ます。2,000,00020000002,0,0,02000
その観点から、3 つのシナリオが考えられます。