我正在尝试将2个数字相乘(每个文本框中有一个)并显示在另一个文本框中 当我输入数字时,没有任何反应。 textBox8显示“2.50”,textBox 10显示“5”。
private void textBox8_TextChanged(object sender, EventArgs e)
{
Multiply();
}
private void textBox10_TextChanged(object sender, EventArgs e)
{
Multiply();
}
public void Multiply()
{
int a, b;
bool isAValid = int.TryParse(textBox8.Text, out a);
bool isBValid = int.TryParse(textBox10.Text, out b);
if (isAValid && isBValid)
textBox7.Text = (a * b).ToString();
else
textBox7.Text = "Invalid input";
}
答案 0 :(得分:0)
使用double.TryParse
double a, b;
bool isAValid = double.TryParse(textBox8.Text.Trim(), out a);
bool isBValid = double.TryParse(textBox10.Text.Trim(), out b);
if (isAValid && isBValid)
textBox7.Text = (a * b).ToString();
else
textBox7.Text = "Invalid input";
答案 1 :(得分:0)
The numbers in textBox8 are (for example) 2.50, and textBox 10 is 2
2.50
是十进制值,无法解析为int
将int.TryParse
更改为decimal.TryParse
int a, b;
bool isAValid = int.TryParse(textBox8.Text, out a);
bool isBValid = int.TryParse(textBox10.Text, out b);
到
decimal a, b;
bool isAValid = decimal.TryParse(textBox1.Text, out a);
bool isBValid = decimal.TryParse(textBox2.Text, out b);
答案 2 :(得分:0)
textBox8中的数字是(例如)2.50,textBox 10是2。
Int32.TryParse(String s, out int)
overload使用NumberStyle.Integer
CurrentCulture
属性。这就是您2.50
失败和isAValid
失败的原因false
。使用NumberStyle.Integer
,您的字符串只能包含;
这就是isAValid && isBValid
为false
(无论isBValid
是什么)和 else语句的原因。
作为解决方案,您可以使用Double.TryParse
方法,NumberStyles.Float| NumberStyles.AllowThousands
与CurrentCulture
一样;
double a;
bool isAValid = Double.TryParse(textBox8.Text, out a);
答案 3 :(得分:-1)
这应该有效:
private void textBox8_TextChanged(object sender, EventArgs e)
{
Multiply();
}
private void textBox10_TextChanged(object sender, EventArgs e)
{
Multiply();
}
public void Multiply()
{
float a, b;
bool isAValid = float.TryParse(textBox8.Text, out a);
bool isBValid = float.TryParse(textBox10.Text, out b);
if (isAValid && isBValid)
textBox7.Text = (a * b).ToString();
else
textBox7.Text = "Invalid input";
}
当然,如其他答案所述,您可以使用小数或双倍,这一切都取决于您想要的精度:
float :单精度浮点(32位)
double :双精度浮点(64位)
十进制:128位浮点
最好的问候!