我在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);