我遇到需要使用datacontract序列化来使用Wcf服务的情况。所以我创建了示例wcf应用程序并模拟了一些数据,如下所示,
return new Obj {
TotalAmount1 = (decimal)268.20,
TotalAmount2 = (decimal)12.00,
TotalAmount3 = (decimal)268.20,
TotalAmount4 = (decimal)17.55 };
[DataContract]
Class Obj
{
[DataMember]
public Decimal TotalAmount1 {get; set;}
[DataMember]
public Decimal TotalAmount2 {get; set;}
[DataMember]
public Decimal TotalAmount3 {get; set;}
[DataMember]
public Decimal TotalAmount4 {get; set;}
}
现在, 虽然从具有这样的值的客户端消费此结果,
{
TotalAmount1 = 268.2,
TotalAmount2 = 12.0,
TotalAmount3 = 268.2,
TotalAmount4 = 17.55 };
最后" 0" TotalAmount1,TotalAmount2,TotalAmount3中缺少。 如果我有非零值,那么它的工作正常。
现在,我需要TotalAmount1应该像" 268.20"。我怎样才能做到这一点。
答案 0 :(得分:1)
string result = decimalValue.ToString("F");
如果要覆盖默认的十进制ToString()
行为,则必须创建自己的类Type。
//编辑
如果你想用额外的格式序列化十进制,你可以做一个技巧。也许你发现它很有用。
public decimal TotalAmount1 { get; set; }
[DataMember(Name = "TotalAmount1")]
private string TotalAmount1Serialized { get; set; }
[OnSerializing]
void OnSerializing(StreamingContext context)
{
this.TotalAmount1Serialized = TotalAmount1.ToString("F");
}
[OnDeserialized]
void OnDeserializing(StreamingContext context)
{
this.PerformanceDate = (...)
}
答案 1 :(得分:0)
string viewTotalAmount1 = String.Format("{0:0.00}", TotalAmount1);