[英]Multiply 2 textbox values and display in 3rd textbox
我试图将 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";
}
使用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";
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);
textBox8 中的数字为(例如)2.50,textBox 10 中的数字为 2。
Int32.TryParse(String s, out int)
重载使用NumberStyle.Integer
和CurrentCulture
属性。 这就是为什么您的2.50
失败并且isAValid
将为false
。 使用NumberStyle.Integer
,您的字符串只能有;
这就是为什么isAValid && isBValid
将是false
(无论isBValid
是什么)并且您的else 语句有效。
作为解决方案,您可以使用Double.TryParse
方法,它使用NumberStyles.Float| NumberStyles.AllowThousands
NumberStyles.Float| NumberStyles.AllowThousands
与CurrentCulture
类似;
double a;
bool isAValid = Double.TryParse(textBox8.Text, out a);
这应该有效:
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 位浮点数。
此致!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.