在转换double 0.10 double.parse()时会转换为10.0



我在visualstudio中有一个简单的控制台应用程序,用于在大型化之前测试一些代码。但现在我在解析一些字符串以使其加倍时遇到了问题。
当用户输入是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。

我强烈怀疑您的默认区域性是.分组分隔符(通常为数千)的区域性。因此,当一个英国人可能把一万写成"10000"时,其他一些文化会把它写成"10.000"。在这一点上,你的输出是有意义的。

如果要使用不变区域性(将.视为十进制分隔符,将,视为分组分隔符)进行解析,请显式执行:

double r_value = double.Parse(value, CultureInfo.InvariantCulture);

最新更新