0

によって返された XML ドキュメントを内部的に解析するMdxClientを使用していますAdomdCommand.ExecuteXmlReader。一部の値は として返されますが、クライアント側でxsd:doubleそれらが必要です。decimal

値を解析するこのライブラリはConvert.ChangeTypeメソッドを使用します。ただし、 orxsd:doubleなどの一部の文字列は に変換できません:3.514680845402702E14.058719395866455E1decimal

var result = Convert.ChangeType("3.514680845402702E1", typeof(decimal), CultureInfo.InvariantCulture);

投げFormatExceptionます。

私はそれを2つのステップで変換できることを知っています:

var tmp = Convert.ChangeType("3.514680845402702E1", typeof(double), CultureInfo.InvariantCulture);
var result2 = Convert.ChangeType(tmp, typeof(decimal), CultureInfo.InvariantCulture);

しかし、ワンステップで可能かどうか疑問に思っていますか?たぶん、カスタムIFormatProvider実装を 3 番目の引数として提供することでしょうか? 何か案は?

4

1 に答える 1

3

使用する必要がありますConvert.ChangeType(...)か?

指数表記でフォーマットされた数値を含む文字列を単純に変換したい場合は、次の操作を実行できます。

var result = decimal.Parse("3.514680845402702E1", System.Globalization.NumberStyles.Float);
于 2015-02-19T15:49:39.597 に答える