3

我在 Visual Studio 中有一个简单的控制台应用程序,用于在变大之前测试一些代码。但是现在我在解析一些字符串时遇到了问题。
当用户输入是String: 0.10我想将其转换为双精度。所以输出应该是双倍的:0.10。

但是当我使用以下代码执行此操作时:

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

或者

r_value = double.Parse(value);

输出将是:10 或 10.0。这个输出怎么会这样变化?并按照我的想法转换为 10.0 而不是 0.10。

4

1 回答 1

13

我强烈怀疑您的默认文化是.一种分组分隔符(通常是数千个)。因此,在一个英国人可能将一万写成“10,000”的地方,一些其他文化会写成“10.000”。在这一点上,你的输出是有意义的。

如果您想使用不变的文化(将其视为.小数分隔符和,分组分隔符)进行解析,请明确执行:

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