尝试格式化字符串给出参数不是IFormatable

时间:2012-08-16 17:46:11

标签: c# string format

这是我的代码:

receipt.AmountCharged = String.Format("{0:C}", recordPaymentRequest.Payment);

我收到“0:C”的消息说:

  

指定了格式,但参数不是IFormatable

如果我尝试.tostring("C")l,我会:

  

错误CS1502:'string.ToString(System.IFormatProvider)'的最佳重载方法匹配有一些无效的参数   错误CS1503:参数1:无法从'string'转换为'System.IFormatProvider'

如何将此转换为货币或2位小数?

iformatprovider是什么意思?

澄清:

[DataContract]
public class RecordPaymentRequest : TokenRequest {

    [DataMember]
    public string Payment {
        get { return payment; }
        set { payment = value; }
    }

这有帮助吗?

1 个答案:

答案 0 :(得分:5)

Payment属性必须是实现IFormatable接口的类型。在这种情况下可能Decimal,因为付款似乎是货币价值 如果这不可能,则需要首先解析字符串值,例如:

receipt.AmountCharged = 
         String.Format("{0:C}", Decimal.Parse(recordPaymentRequest.Payment));