按钮不会使值出现在textBox中

时间:2018-02-05 13:48:29

标签: c#

按下按钮后,我希望2 textBoxes 显示数字,但是当我按下按钮时,一个textBox显示数字,第二个不显示。

    private void Calculating(object sender, EventArgs e)
    {
        if (textBox6.Text != "")
        {
           rutr = Double.Parse(textBox6.Text);
           rutd = rutr * 2;            
           textBox7.Text = (rutd).ToString();
           textBox8.Text = (3 / 4 * pi * rutr * rutr * rutr).ToString();
        }
    }

textBox8没有显示正确的数字。

2 个答案:

答案 0 :(得分:1)

错误行为的根本原因是整数除法3 / 4 == 0

// The formula seems to be a volume of a sphere: 3/4 * Pi * r**3 
// It's a physical world, that's why 3.0 - double, not 3M - decimal 
textBox8.Text = (3.0 / 4.0 * pi * rutr * rutr * rutr).ToString();

请注意浮点 3.0值,而不是整数 3。另一个建议是使用double.TryParse:如果我们可以解析用户输入(textBox6.Text)然后执行并计算

private void Calculating(object sender, EventArgs e) {
  double rutr = 0.0;

  // If we can parse textBox6.Text into double rutr  
  if (double.TryParse(textBox6.Text, out rutr)) {
    rutd = rutr * 2;            
    textBox7.Text = (rutd).ToString();
    textBox8.Text = (3.0 / 4.0 * pi * rutr * rutr * rutr).ToString(); 
  }
}

修改:从技术上讲,可能在{{1}中生成空白"") },请参阅下面的评论(这本身就是一个有趣的问题)。这是代码

textBox8

我们在此利用 using System.Globalization; ... CultureInfo ci = (CultureInfo.CurrentCulture.Clone() as CultureInfo); // The idea: double.NaN will be displayed as blank ci.NumberFormat.NaNSymbol = ""; CultureInfo.CurrentCulture = ci; double pi = Math.Sqrt(-1); // pi is double.NaN - imaginary unit ... // 0 * NaN * rutr * rutr * rutr == NaN which is printed as empty string textBox8.Text = (3 / 4 * pi * rutr * rutr * rutr).ToString(); 这一事实。但是,我不相信这种错误

答案 1 :(得分:0)

您应该使用后缀告诉编译器数字文字不被视为int。

textBox8.Text = (3M / 4M * pi * rutr * rutr * rutr).ToString();

https://docs.microsoft.com/en-US/dotnet/csharp/language-reference/keywords/decimal

以下是可能的后缀列表:

F:漂浮 D:加倍 你:uint L:很久 UL:ulong M:十进制