2015-11-04 66 views
0

在我的語法下面我得到的錯誤使用十進制和布爾

類型的異常錯誤「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' –

回答

5

你試圖返回線以上的評論的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; 
}