使用十进制和布尔值时出错

本文关键字:出错 布尔值 十进制 | 更新日期: 2023-09-27 18:20:30

在下面的语法中,我得到了的错误

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);
}

使用十进制和布尔值时出错

您试图返回decimal,但调用Convert.ToInt16尝试Convert.ToDecimal

此外,我建议使用十进制。TryParse而不是直接调用Convert,代码如下:

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