在数学中,取数字的平方根应该给你正负根。例如:
√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
,-2
和2
{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#中计算所有实数平方根的最有效方法。还有更好的方法吗?
答案 0 :(得分:1)
当你将一个数字提高到某个幂时,有两个选项..如果分母是偶数,那么你应该加上加号和减号,或者分母是奇数,在那种情况下,只有一个根。所以如果你想要采取所有真正的根(有时候有更复杂的根),你需要做条件,而且没有更有效的方法..