gpt4 book ai didi

c# - 返回错误的二次公式

转载 作者:太空狗 更新时间:2023-10-30 00:52:28 26 4
gpt4 key购买 nike

我正在编写一个程序,我正在使用二次公式。这是单击按钮时执行的代码,用于解决问题,

private void button1_Click(object sender, EventArgs e)
{
double aVal, bVal, cVal, xVal1, xVal2;
xVal1 = 0;
xVal2 = 0;
aVal = Convert.ToDouble(a.Text);
bVal = Convert.ToDouble(b.Text);
cVal = Convert.ToDouble(c.Text);
xVal1 = (bVal + Math.Sqrt(Math.Pow(bVal, 2) - (4 * aVal * cVal))) / 2 * aVal; //Positive Calculation
xVal2 = (bVal - Math.Sqrt(Math.Pow(bVal, 2) - (4 * aVal * cVal))) / 2 * aVal; //Negative Calculation
xPos.Text = Convert.ToString(xVal1);
xNeg.Text = Convert.ToString(xVal2);
}

经过一些调试后,我相信我已经将问题缩小到第 9 行和第 10 行,实际的数学计算就发生在这两个地方。但是,我不太确定出了什么问题。如您所见,数字是 double ,并且已初始化,因此它们不为空或截断。当我运行程序并输入 6、4 和 3 的 b 和 c 值时,负责输出负值和正值的 xPos 和 xNeg 标签仅显示 NaN。我应该为这类事情使用标签吗?

最佳答案

对于输入值 6、4 和 3,Math.Pow(bVal, 2) - (4 * aVal * cVal) 的结果是 -56 . 当您获得负数的 Sqrt 时,您会得到结果 NaN

您还需要使用正确的公式。你应该:

var sqrt = Math.Sqrt(Math.Pow(bVal, 2.0) - (4.0 * aVal * cVal));
var xVal1 = (-bVal + sqrt) / (2.0 * aVal); //Positive Calculation
var xVal2 = (-bVal - sqrt) / (2.0 * aVal); //Negative Calculation

注意第一个 bVal 前面的 -2 * aVal 周围的括号。

我还用 .0 表示常量,因为这会告诉编译器您正在使用 double 。如果不这样做,很容易得到不正确的结果。

关于c# - 返回错误的二次公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21177353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com