【问题标题】:Why I got error when I divide doubles values?为什么我在除以双精度值时出错?
【发布时间】:2016-02-24 14:29:39
【问题描述】:

我正在使用 Windows 窗体。我有一个按钮和 3 个文本框,我正在尝试除以双数。

为什么当我在 textbox1 中输入 0 并在 textbox2 中输入 0 并且单击按钮时结果 = NaN(非数字)值(它应该是 0)? .当我输入不同的数字时效果很好,但是当我在 texstbox1 中输入 0 并在 textbox2 中输入 0 时,结果 = NaN 。

当我将 0 除以 0 时,我只想在 textbox3 中显示 0 或 0.00 值作为除法过程的结果。

private void button1_Click(object sender, EventArgs e)
{
    double a, b, result;

    a = Convert.ToDouble( textBox1.Text );
    b= Convert.ToDouble(textBox2.Text);

    result = a / b;     // I tried: result = (a / b) but the results still NaN;

    textBox3.Text = result.ToString();  // I tried: textBox3.Text = result.ToString("0:00") but the results still NaN;
}

【问题讨论】:

  • 0/0 是一个不确定的形式

标签: c#


【解决方案1】:

零除以零没有定义。这是一个基本的数学性质。

在所有可能遇到表达式“x / 0”的编程情况下,您需要在尝试除法之前检查分母是否为零。

一种解决方案是使用以下代码来捕获错误并显示错误消息:

if (b == 0)
    textBox3.Text = "Error, cannot divide by zero";
else {
    result = a / b;
    textBox3.Text = result.ToString();
}

【讨论】:

    【解决方案2】:

    不允许除以零,这只是数学运算。为避免异常,您有两种选择。

    在执行除法之前测试第二个值是否为零:

    result = (b != 0) ? (a / b) : 0;
    

    或者捕获将被抛出的异常:

    try
    {
        result = a / b;
    }
    catch (DivideByZeroException)
    {
        result = 0;
    }
    

    【讨论】:

    • 除以零将是 double.PositiveInfinityNegativeInfinity 取决于股息;)
    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2016-03-31
    相关资源
    最近更新 更多