[英]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.