Input string was not in a correct format in double.Parse

Arj*_*jun 3 c# calculator

I am new to C#. I'm trying to make a calculator, but the following error occurred:

输入字符串的格式不正确.

这是代码的摘要:

double num1, num2, result;

private void button14_Click(object sender, EventArgs e)
{
    num1 = Convert.ToDouble(textBox1.Text);
    textBox1.Text = String.Empty;
    num2 = double.Parse(textBox1.Text);   **//ERROR OCCURED HERE**
    result = num1 - num2;
}

private void button13_Click(object sender, EventArgs e)
{
    num1 = Convert.ToDouble(textBox1.Text);
    textBox1.Text = String.Empty;
    num2 = System.Double.Parse(textBox1.Text);  **//ERROR OCCURED HERE**
    result = num1 + num2;
}
Run Code Online (Sandbox Code Playgroud)

如何将字符串转换为double类型?

And*_*ard 11

还要记住,Parse方法依赖于操作系统的文化来执行转换,因此请尝试将代码更改为

num2 = double.Parse(textBox1.Text, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

您也可以考虑使用

double.TryParse
Run Code Online (Sandbox Code Playgroud)

更好的异常处理方法.


Ver*_*eos 4

您想用这段代码实现什么目的?看来你的算法是错误的。

正如其他人所说,这段代码

textBox1.Text = String.Empty;
num2 = double.Parse(textBox1.Text);
Run Code Online (Sandbox Code Playgroud)

会抛出异常,因为空字符串无法转换为 Double!

所以,我想知道你为什么重置你的字段。我想了一会儿,也许我明白你想做什么。假设您在 TextBox1 中键入一个数字。然后你按“-”按钮进行减法,然后你想输入第二个数字来查看结果。是这样吗?如果是,您编写的代码将不会等待您的下一次输入!

事实上,当您单击该按钮时,它只是执行您编写的所有行。我会写这样的东西。

double num1, num2, result;
string operation;

private void button14_Click(object sender, EventArgs e) //Minus Button
{
    if (textBox1.Text != String.Empty) //Added if statement to see if the textBox is empty
        num1 = Convert.ToDouble(textBox1.Text);
    else
        num1 = 0; //If textBox is empty, set num1 to 0
    textBox1.Text = String.Empty;
    operation = "-";
}

private void button13_Click(object sender, EventArgs e) //Equals Button
{
    if (textBox1.Text != String.Empty)
        num2 = Convert.ToDouble(textBox1.Text);
    else
        num2 = 0;
    if (operation == "-")
    {
        result = num1 - num2;
        textBox1.Text = Convert.ToString(result);
    }
    if (operation == "+")
    {
        //You got it
    }
    //And so on...
}
Run Code Online (Sandbox Code Playgroud)

编辑:如果字符串为空,这将始终抛出异常,所以我添加了一个控件。如果字符串为空,则值为零。