我有一个源XML文件,它使用点号(“.”)作为小数点分隔符,而我要在一个使用逗号(“,”)作为小数点分隔符的系统上解析它。
结果是,值0.7被Double.TryParse
或Double.Parse
解析为7000000。
我有什么选择可以正确解析?其中之一是用String.Replace('.', ',')
将源中的点替换为逗号,但我不太喜欢这个方法。
XML标准明确规定了日期、数字等格式的格式化。这有助于确保XML在各个平台之间独立和互操作性。请查看使用XmlConvert处理XML数据。
double value = XmlConvert.ToDouble(stringValue);
这个可以完成任务:
string test = "0.7";
Assert.Equal(0.7, Double.Parse(test, NumberStyles.Float, CultureInfo.InvariantCulture));
指定自定义小数点的简便方法:
var price = "122$00";
var nfi = new NumberFormatInfo { CurrencyDecimalSeparator = "$" };
var ok = decimal.TryParse(price, NumberStyles.Currency, nfi, out result);
double.TryParse
有一个重载函数,接受一个IFormatProvider类型的参数。在你的代码中应使用相应的CultureInfo,例如可以使用CultureInfo.InvariantCulture。