我有一个小数属性,比如
[XmlElementAttribute(DataType = "decimal")] decimal Price
问题是我想强制它始终以 2 的精度进行序列化,但如果价格为 10.50,它将被序列化为 XML,如 <Price>10.5</Price>
.
有什么方法可以强制执行它(无需创建新属性或更改此属性的获取方式?我正在寻找某种方法来执行此操作,仅将模式发送到 XmlSerializer(或 XmlElementAttribute)或任何智能方式这样做吗?
谢谢
最佳答案
我遇到了相反的问题。我的小数位序列化为 4 个小数位,即使它们都是 4 个零。我发现如果我调用 decimal.Round(value, 2)
然后它序列化到 2 个小数位。看起来 Decimal 类型记住您在序列化时也对它进行了四舍五入。
我对这个建议持怀疑态度,但它很简单。即使该值不需要舍入,调用 Round 也会更改序列化中显示的小数位数。
关于C#序列化十进制到xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1613307/