2009-10-23 6 views
19
問題は、常に2の精度でシリアル化することです。 これを強制する任意の方法(新しいプロパティを作成したり、このプロパティのgetを変更することなく)?これはXmlSerializer(またはXmlElementAttribute)やスマートな方法でのみパターンを送信する方法を探していますこれを行うには? ありがとう
+0

私は同じ問題を扱っていて、あなたの質問を見つけ、別の答えを見つけました。見てみな。 –

+1

@ジム......答えは正確に何ですか?リンクについてはどうですか? –

+0

@JK私はそれが以下のものだと思う(http://stackoverflow.com/a/2456126/255)。 –

答えて

8

これを行うには、実際の小数プロパティにXmlIgnoreを追加し、(10.5 形式の)文字列として、えっ、価格を返す新しいプロパティPriceAsStringをもたらす可能性があります。

をもちろんを実装することもできますと自分ですべてを行う。

しかし、これらの方法のどれも本当に岩ない、とあなたはすでにあなたが

24

私は逆の問題を抱えていた...とにかく、この道を行くつもりはなかったと述べました。私の小数点は4小数点以下4桁であったにもかかわらず、小数点以下4桁でシリアル化されていました。私がdecimal.Round(value, 2)を呼び出すと、小数点以下2桁までシリアル化されることが分かりました。 Decimalタイプは、が最後に何回丸められたかを記憶しているように見えます。

私はその提案を疑っていましたが、それは簡単に機能しました。値が丸めを必要としなかったにもかかわらず、Roundを呼び出すことで、シリアル化で何小数点以下の桁が現れたかが変更されました。

+0

ニース!私がしたことは、値を設定するときにdecimal.Roundを使用して、希望の精度で行うことです。これは*本当の*答えです! – Schultz9999

+2

+1これはちょっとハッキーです –

+0

ハードコーディングされた '0.00'の値を出力する必要がありました(VB.NETではこれが唯一のものでした)Decimal.Round(0.00D、2) –