计算两个平方根

时间:2014-02-15 09:42:17

标签: c# math

在数学中,取数字的平方根应该给你正负根。例如:

√4 = -2 and +2

但是,C#(以及大多数编程语言)只会返回2

所以我可以有一个类:

class PlusMinus
{
    double A;
    double B;

    public PlusMinus(double _A, double _B)
    {
        A=_A;
        B=_B;
    }

    public static PlusMinus Sqrt(double Number)
    {
        double A = Math.Sqrt(Number);
        return new PlusMinus(A, -A);
    }
}

但是,这不会处理相应的内容,例如4^0.5-2+2,或16^0.25-22 {1}}再次。

然后我应该重写Pow函数:

public static PlusMinus Pow(double Number, double Power)
{
    double A = Math.Pow(Number, Power);
    if(Math.Pow(-A, 1/Power) == Number){
        return new PlusMinus(A, -A);
    }
    return new PlusMinus(A, A);
}

哪个确实有效。但是,这似乎不是在C#中计算所有实数平方根的最有效方法。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

当你将一个数字提高到某个幂时,有两个选项..如果分母是偶数,那么你应该加上加号和减号,或者分母是奇数,在那种情况下,只有一个根。所以如果你想要采取所有真正的根(有时候有更复杂的根),你需要做条件,而且没有更有效的方法..