错误使用十进制和布尔

问题描述:

在我的语法下面我得到的错误使用十进制和布尔

类型的异常错误“System.FormatException”mscorlib.dll中
发生在疗法用户代码中没有处理
附加信息:输入字符串的不正确的格式

,值传递抛出错误是9.7000
这是我的语法 - 我有引发错误

private void calculate() 
{ 
    var qtys = val(dropdownlist.SelectedItem.Text) + "|" + val(dropdownlist1.SelectedItem.Text) + "|" + val(dropdownlist2.SelectedItem.Text) ; 
    var totalitems = dropdownitem.SelectedItem.Text + "|" + dropdownitem1.SelectedItem.Text + "|" + dropdownitem2.SelectedItem.Text + "|" + dropdownitem3.SelectedItem.Text; 
    var amounts = dropdownamt.SelectedItem.Value + "|" + dropdownamt1.SelectedItem.Value + "|" + dropdownamt2.SelectedItem.Value + "|" + dropdownamt3.SelectedItem.Value; 
    var totalitems = itemInfo.Split('|'); 
    var qtys = qty.Split('|'); 
    var amounts = amount.Split('|'); 

    for (int i = 0; i < totalitems.Count(); i++) 
    { 
     if (totalitems[i] != "" && qtys[i] != "" && qtys[i] != "0") 
     { 
      TotalPrice += Math.Round(val(amounts[i]), 2); 
      TotalTax += Math.Round(val(amounts[i]) * Convert.ToDecimal(0.07), 2); 
     } 
    } 
} 


private decimal val(string p) 
{ 
    if (p == null) 
     return 0; 
    else if (p == "") 
     return 0; 
    //The value of p = 9.7000 
    return Convert.ToInt16(p); 
} 
+0

'Int16'!='decimal' –

你试图返回线以上的评论的decimal但调用Convert.ToInt16尝试Convert.ToDecimal

此外,我会建议使用decimal.TryParse而不是直接调用像这样的代码直接转换:

public decimal convert(string p) 
{ 
    decimal result; 
    if(decimal.TryParse(p, out result)) 
     return result; 
    else 
     return 0; 
}