string
aから aを解析する必要がありdecimal
、英国またはヨーロッパの文化で使用される可能性があります。
もしヨーロッパの文化2,00
で2
ただし、2,00
カンマは 1000 を表すため、英国の文化では無効です。
私が使用する場合
Double.Parse("20,50", new CultureInfo("en-GB"))
戻ります2050
これにより、無効な例外がスローされると予想していました。
誰でも助けることができますか?
string
aから 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,000
2000000
2,0,0,0
2000
その観点から、3 つのシナリオが考えられます。