计算多个文本框时出错

时间:2018-03-12 20:37:55

标签: c# floor

我发现了一个错误

  

System.FormatException:'输入字符串的格式不正确。'

在我的c#项目中。我想将我的十进制值转换为round,但如果值为" 7.99"它的输出仅为7,而在" b"。我使用这个功能,但我失败了。

void Calculation()
   {
        double a = Convert.ToDouble(lblTFPc.Text); **//Error appears here**
        double b = Convert.ToDouble(lbl1.Text);
        double c = Convert.ToDouble(lblTPc.Text);
        double d = Convert.ToDouble(lblSchOn.Text);
        try
        {

            a = (c / d);

            b = Math.Floor(a +0.0);


        }
        catch (Exception ex)
        {
            MetroFramework.MetroMessageBox.Show(this, "Error" + ex, "Stop", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }

我改变了方式,但仍然是错误

void Calculation()
    {
        try
        {
            decimal a = Convert.ToDecimal(txtValue.Text);
            decimal b = Convert.ToDecimal(lblCtn.Text);
            decimal c = Convert.ToDecimal(lblPc.Text);

            decimal d = Convert.ToDecimal(lblCtnInPc.Text);
            decimal e = Convert.ToDecimal(txtQtyCtn.Text);
            decimal f = Convert.ToDecimal(lblCtnSize.Text);

            decimal g = Convert.ToDecimal(lblTotalPc.Text);
            decimal h = Convert.ToDecimal(txtQtyPc.Text);

            decimal i = Convert.ToDecimal(txtTotalFreePc.Text); **//error is here I change lbl into txtbox but error still**
            decimal j = Convert.ToDecimal(lblSchemeOn.Text);

            decimal k = Convert.ToDecimal(lbl1.Text);

            a = (b + c);
            d = (e * f);
            g = (h + d);
            i = (g / j);
            k = Math.Floor(i);
        }
        catch (Exception ex)
        {
            MetroFramework.MetroMessageBox.Show(this, "Error" + ex, "Stop", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }

尝试错误是这样的:

  

ErrorSystem.FormatException:输入字符串的格式不正确。   at System.Number.StringToNumber(String Str,NumberStryles options,NumberBuffer number,NumberFormatInfo info,Boolean parseDecimal)   at System.Number.ParseDecimal(String value,NumberStyles options,NUmberFormatInfo numfmt)   atSystem.Convert.ToDecimal(String value)   在[Filepath]中的MyProject.Forms.frmPurchaseItem.Calculation()

2 个答案:

答案 0 :(得分:0)

您是否尝试使用文本框“0,55”值而不是“0.55”。或者你也可以使用TryParse函数。

double result=0;
if(Double.TryParse(lblTFPc.Text, out result))
...

答案 1 :(得分:0)

lbl是标签的Control缩写,textbox的缩写是txt。检查文本属性中的标签是否包含文本而不是数字。也许你把标签而不是文本框。如果有文本,则Convert.ToDouble()无法执行转换。