[英]C# XML Serialization and Decimal Value
我正在使用XmlSerializer将包含小数的C#对象序列化为xml字符串
例如
AnObject.ADecimalValue
我发现精度尤其在变化,即使我显式舍入为以下值,一些值在点之后也得到四个值的输出,例如12564.39得到的输出为12564.3900
AnObject.ADecimalValue = decimal.Round(AnObject.ADecimalValue, 2);
序列化代码如下。
XmlSerializer serializer = new XmlSerializer(typeof(AnObject));
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, source);
string result = writer.ToString();
return result;
}
如何确保小数点后仅输出两个值
我认为四舍五入浮点数不会对此有所帮助。 序列化器会根据自己的规则将数字转换为字符串。 最好的办法是引入一个新的字符串属性,并在其中格式化数字并序列化它而不是原始数字。
有关该主题的更多信息,类似的问题: 您可以为日期时间的XmlSerialization指定格式吗?
这是我解决类似问题的方式,它对我来说非常有效。
private decimal price;
[XmlElement(DataType="decimal")]
public string Price
{
get { return price.ToString("c"); }
set { price = Convert.ToDecimal(value); }
}
就我而言,我将其转换为货币,但是您可以使用price.ToString(“ 0.00”)将XML元素转换为带有2个零的十进制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.