1
Invoice invoice = new Invoice();
invoice.TotalInclTax = 4194.00f;
invoice.serialize();

浮動小数点値のシリアル化に助けが必要です。現在、次のように 4194.00 をシリアル化しています。

<TotalInclTax>4194</TotalInclTax>

しかし、私はこのようなものが欲しい:

<TotalInclTax>4194.00<TotalInclTax>
4

2 に答える 2

4

TotalInclTax のシリアル化方法をカスタマイズするために、クラスを少し調整できます。

static CultureInfo ci = CultureInfo.InvariantCulture;
float _TotalInclTax = 0;

[XmlIgnore]
public float TotalInclTax 
{
    get { return _TotalInclTax ; }
    set { _TotalInclTax  = value; }
}

[XmlElement("TotalInclTax")]
public string CustomTotalInclTax
{
    get { return TotalInclTax.ToString("#0.00", ci); }
    set { float.TryParse(value, NumberStyles.Float, ci, out _TotalInclTax); }
}
于 2013-02-19T21:50:50.310 に答える
1

逆シリアル化メソッドを使用して値を取得しても問題はありません。4672.34 のように、小数点の後にゼロ以外の値で値をシリアル化しようとすると、小数点とその他の数字を配置する必要があります。

しかし、他の理由で小数点のフォーマットを絶対に制御する必要がある場合は、それを文字列としてシリアル化し、浮動小数点の文字列印刷フォーマットを使用して文字列値を設定し、文字列値を浮動小数点型の変数に読み戻します。

于 2013-02-19T21:51:38.757 に答える