App.config から値を読み取っています。つまり:
<add key="someValue" value="0.05"/>
そして、次のようにして double に変換しようとします。
var d = double.Parse(ConfigurationManager.AppSettings["someValue"]);
そして、0.05 ではなく 5.0 を取得します。
アドバイスいただけますか?私は何を間違っており、これをどのように解析する必要がありますか?
それはあなたのカルチャ設定です。同じことをテストしますが、ポイントの代わりにコンマを使用すると、その作業が表示されます
var d = double.Parse("0,05");
この問題を修正するには、parse 関数の follow オーバーロードを使用できます。
var d = double.Parse(ConfigurationManager.AppSettings["someValue"], CultureInfo.InvariantCulture);
問題は文化設定にあるのかもしれません。デジタルセパレータとしてのカンマなど、多くの問題が発生する可能性があります。構成ファイルなど、カルチャ化されていない値を使用している場合は、InvariantCulture が必要であることを明示的に指定する必要があります。試す
var d = double.Parse(ConfigurationManager.AppSettings["someValue"],
CultureInfo.InvariantCulture);
このコード:
var nfi = new NumberFormatInfo {
NumberGroupSeparator = ".",
NumberDecimalSeparator = ","
};
Console.WriteLine(double.Parse("0.05", nfi));
印刷5
も行われるため、問題はカルチャ設定にあります。
試す
var d = double.Parse(
ConfigurationManager.AppSettings["someValue"],
CultureInfo.InvariantCulture);
double.Parse を使用するときは、常にカルチャ情報を渡します。ここベルギーでは「0,05」です。
それは文化設定のせいです。確認してください "。" 現在のカルチャの区切り文字です。