Xml Serialize浮点值

时间:2013-02-19 21:41:17

标签: c# xml serialization floating-point

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

我需要一些帮助来序列化浮点值。目前它序列化4194.00如下:

<TotalInclTax>4194</TotalInclTax>

但是,我想要这样的事情:

<TotalInclTax>4194.00<TotalInclTax>

2 个答案:

答案 0 :(得分: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); }
}

答案 1 :(得分:1)

如果使用deserialize方法检索值,则应该没有问题。如果你试图在像1672.34这样的十分点之后序列化一个非零值的值,它应该把小数点和其他数字放在一起

但是如果由于其他原因你绝对需要控制小数点格式,我会说将它序列化为一个字符串并使用字符串打印格式设置一个浮点数来设置字符串值并将字符串值读回一个类型的变量浮。