つまり、これを変換したい:
string a = "40.00";
Convert.ChangeType(a, typeof(decimal))
結果は10進数値「4000」
問題は、変換呼び出しがxmlToObjectコンバーターの非常に抽象的なジェネリックメソッドにあることです。正しく変換するために、プログラムでさまざまな例外を追加したくありません。
クリスよろしく
現在のカルチャでは、小数点がピリオド文字で表されない場合があります。
一般に、カルチャに不変の変換を実行する場合、 method のIFormatProvider
引数として CultureInfo.InvariantCulture を指定するのが最善です。
(decimal) Convert.ChangeType(a, typeof(decimal), CultureInfo.InvariantCulture);
変換は、ピリオドを小数点の代わりに桁区切り記号として使用するカルチャを使用して行われる可能性があります。
値を変換するときにカルチャを指定します。
Convert.ToDecimal(a, CultureInfo.InvariantCulture)
次のコード
string s = "40.00";
decimal d = (decimal)Convert.ChangeType(s, typeof(decimal));
d = 40になります。これは私には問題ありません。正確にあなたの問題は何ですか?
編集:使用されている文化に問題があるようです。これを変換のために行います:
string s = "40.00";
decimal d = (decimal)Convert.ChangeType(s, typeof(decimal), CultureInfo.InvariantCulture);