3

大きくなる前にいくつかのコードをテストするために、Visual Studio に単純なコンソール アプリケーションがあります。しかし、今、いくつかの文字列を double に解析する際に問題があります。
ユーザーの入力がaの場合、String: 0.10これをdoubleに変換したい。したがって、出力は double の 0.10 になるはずです。

しかし、次のコードでこれを行うと:

double r_value = 0;
r_value = Math.Round(double.Parse(value), 2);

または

r_value = double.Parse(value);

出力は 10 または 10.0 になります。この出力がこのように変化するのはどうしてでしょうか? そして、私がそうあるべきだと思ったように、0.10ではなく10.0に変換します。

4

1 に答える 1

13

あなたのデフォルトのカルチャは.グループ区切り記号 (通常は数千) を使用していると強く思います。したがって、イギリス人が 10,000 を「10,000」と書くところを、他の文化では「10.000」と書きます。その時点で、出力は理にかなっています。

インバリアント カルチャ.(小数点記号およびグループ区切り記号として扱われる) を使用して解析する場合,は、明示的に行います。

double r_value = double.Parse(value, CultureInfo.InvariantCulture);
于 2012-12-11T21:00:17.797 に答える