在下面的语法中,我收到错误
在 mscorlib.dll 中出现' System.FormatException' 类型的例外情况,但未在用户代码中处理
附加信息:输入字符串的格式不正确
抛出错误的传递值是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 :(得分:5)
您尝试返回decimal
但是正在调用Convert.ToInt16
尝试Convert.ToDecimal
另外我建议使用decimal.TryParse,而不是直接用这样的代码调用Convert:
public decimal convert(string p)
{
decimal result;
if(decimal.TryParse(p, out result))
return result;
else
return 0;
}