Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的二次方程求解器#_C# - Fatal编程技术网

C# C语言中的二次方程求解器#

C# C语言中的二次方程求解器#,c#,C#,我正试图用C#编写一个简单的二次方程求解器,但由于某些原因,它并没有给出正确的答案。事实上,它给了我非常大的数字作为答案,通常是数百万 谁能给我点启示吗?对于正根和负根,我得到了完全相同的答案。(尝试了两种不同的数学方法) 请尝试此版本的quadForm: static double quadForm(int a, int b, int c, bool pos) { var preRoot = b * b - 4 * a * c; if (preRoot < 0)

我正试图用C#编写一个简单的二次方程求解器,但由于某些原因,它并没有给出正确的答案。事实上,它给了我非常大的数字作为答案,通常是数百万

谁能给我点启示吗?对于正根和负根,我得到了完全相同的答案。(尝试了两种不同的数学方法)


请尝试此版本的
quadForm

static double quadForm(int a, int b, int c, bool pos)
{
    var preRoot = b * b - 4 * a * c;
    if (preRoot < 0)
    {
        return double.NaN;
    }
    else
    {
        var sgn = pos ? 1.0 : -1.0;
        return (sgn * Math.Sqrt(preRoot) - b) / (2.0 * a);
    }
}
静态双四元格式(整数a、整数b、整数c、布尔位置)
{
var preRoot=b*b-4*a*c;
if(预根<0)
{
返回double.NaN;
}
其他的
{
var sgn=位置1.0:-1.0;
返回(sgn*数学Sqrt(预根)-b)/(2.0*a);
}
}

你给了它什么样的输入?@Asad我分别为a、b、c尝试了1、2、3,得到了。。。1073741823roots@user3924098,你知道你的a,b,c等于1,2,3时,
(b*b)-(4*a*c)
的结果是什么吗?@user3924098,你能告诉我
-8
的平方根是多少吗?或者更具体地说,
Math.Sqrt(-8)
的返回值是多少?不要将
Sqrt
的结果强制转换为整数。仅仅因为系数是整数,并不意味着根是整数。教科书版的二次公式有潜在的问题,精度严重下降。建议使用以下命令:@dbc-在“严重”和“显著”之间有区别。这也只影响两个相对接近的数字相减的情况。这通常不是一个问题。因此,除非该代码需要工程精度,否则它不应该是一个问题。
static double quadForm(int a, int b, int c, bool pos)
{
    var preRoot = b * b - 4 * a * c;
    if (preRoot < 0)
    {
        return double.NaN;
    }
    else
    {
        var sgn = pos ? 1.0 : -1.0;
        return (sgn * Math.Sqrt(preRoot) - b) / (2.0 * a);
    }
}