输入字符串的双精度格式不正确.解析
本文关键字:不正确 解析 格式 双精度 字符串 输入 | 更新日期: 2023-09-27 18:33:12
我是C#的新手。我正在尝试制作计算器,但发生以下错误:
输入字符串的格式不正确。
以下是代码摘要:
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;
}
如何将字符串转换为双精度类型?
另请记住,Parse 方法依赖于操作系统的区域性来执行转换,因此请尝试将代码更改为
num2 = double.Parse(textBox1.Text, CultureInfo.InvariantCulture);
您也可以考虑使用
double.TryParse
方法,以便更好地处理异常。
你想用这段代码实现什么?看来你的算法是错误的。
就像其他人说的,这段代码
textBox1.Text = String.Empty;
num2 = double.Parse(textBox1.Text);
将抛出异常,因为空字符串无法转换为双精度!
所以,我想知道你为什么要重置你的领域。我想了一会儿,也许我明白你想做什么了。假设您在文本框 1 中键入一个数字。然后按"-"按钮减去,然后输入第二个数字以查看结果。是这样吗?如果是,您编写的代码将不会等待您的下一个输入!
事实上,当你点击按钮时,它只是执行你写的所有行。我会写这样的东西。
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...
}
编辑:如果字符串为空,这将始终抛出异常,所以我添加了一个控件。如果字符串为空,则值变为零。
由于已清除上一行上的文本框,因此解析转换将失败。
textBox1.Text = String.Empty;
num2 = double.Parse(textBox1.Text);
它将如何将 String.Empty 转换为 Double?这样做的方式是不对的。例如,如果单击"+"按钮,则必须检查是否已经有数字。如果是这样,请添加数字并显示结果:
Double num;
private void Add_Click(object sender, EventArgs e)
{
If (num != null)
{
num == num + Convert.ToDouble(textBox1.Text);
}
else
{
num1 == Convert.ToDouble(textBox1.Text);
}
textBox1.Text = num;
}
num2
值应该从textbox2
而不是textbox1
中获取(您将textbox1.text设置为空并尝试将其解析为再次加倍)
//You are setting textbox1 to empty
textBox1.Text = String.Empty;
//here trying to parse it to double
num2 = double.Parse(textBox1.Text);
也不要直接使用Convert.ToDouble(textBox1.Text)
。 如果用户键入非数值,代码将崩溃。 首先检查它是否是一个有效的数字,始终使用doube.TryPrase()
double num1;
double.TryParse(textBox1.Text, out num1);
您的代码似乎很难理解button_13和button_14的用途;
我将假设您尝试这样做:
bool ifNew = true;
double num1 ,num2,result;
private void Add_Click(object sender, EventArgs e))
{
if(ifNew)
{
num1 = Convert.ToDouble(textBox1.Text);
textbox1.Clear();
ifNew = false;
result += num1;
}
else
{
num2 = Convert.ToDouble(textBox1.Text);
textbox1.Clear();
result += num2;
num1 = 0D;
num2 = 0D;
ifNew = true;
}
}
private void Equals_Click(object sender, EventArgs e)
{
textboxl.Text = string.Format("{0:N}",result);
}
或者你可以在我的Convert.ToDouble中使用Double.Parse。这取决于您的操作,但我正在可视化如何进行添加操作,您可以更改和编辑此操作取决于您的操作