我正在使用MdxClient,它在内部解析由AdomdCommand.ExecuteXmlReader
. 一些值返回为xsd:double
,但我希望它们decimal
在客户端。
这个解析值的库使用Convert.ChangeType
方法。但是某些xsd:double
字符串,例如3.514680845402702E1
or4.058719395866455E1
不能转换为decimal
:
var result = Convert.ChangeType("3.514680845402702E1", typeof(decimal), CultureInfo.InvariantCulture);
抛出FormatException
。
我知道我可以分两步转换它:
var tmp = Convert.ChangeType("3.514680845402702E1", typeof(double), CultureInfo.InvariantCulture);
var result2 = Convert.ChangeType(tmp, typeof(decimal), CultureInfo.InvariantCulture);
但我想知道是否可以一步完成?也许通过提供自定义IFormatProvider实现作为第三个参数?有任何想法吗?