C# math.sqrt的返回值
我一直试图画y^2=4*a*x的函数,但遇到了一个问题。当我使用math.sqrt函数来求一个有两个答案+或-的值的平方根时,我只得到正值。i、 如果我找到4的sqrt,它将返回+2而不是+2或-2 任何帮助都将不胜感激。如果您阅读(MSDN确实完整且制作精良,在提问之前使用它),您将看到,对于参数0或正,C# math.sqrt的返回值,c#,function,return,math.sqrt,C#,Function,Return,Math.sqrt,我一直试图画y^2=4*a*x的函数,但遇到了一个问题。当我使用math.sqrt函数来求一个有两个答案+或-的值的平方根时,我只得到正值。i、 如果我找到4的sqrt,它将返回+2而不是+2或-2 任何帮助都将不胜感激。如果您阅读(MSDN确实完整且制作精良,在提问之前使用它),您将看到,对于参数0或正,Math.Sqrt仅返回“d的正平方根” 如果你需要负值,你必须自己做,例如: double value = 4; double positiveSqrt = Math.Sqrt(value)
Math.Sqrt
仅返回“d的正平方根”
如果你需要负值,你必须自己做,例如:
double value = 4;
double positiveSqrt = Math.Sqrt(value);
double negativeSqrt = positiveSqrt * -1;
您可以编写自己的方法来返回这两个值:
public static IEnumerable<double> Sqrt(double d)
{
var result = Math.Sqrt(d);
yield return result;
yield return -result;
}
公共静态IEnumerable Sqrt(双d)
{
var结果=数学Sqrt(d);
收益结果;
收益-结果;
}
您也可以将答案与-1相乘,然后得到两者。如果您真的想要一个同时返回正平方根和负平方根的函数,您可以非常轻松地编写自己的函数:
public static double[] Sqrts(double d) {
var v = Math.Sqrt(d);
return v == 0 ? new[] { v } : new[] { v, -v };
}
因为这是函数的定义。。。如果你想要负值,你总是可以颠倒你得到的值…你怎么期望函数返回±2?你在用量子计算机吗?如果你取零的平方根呢?@EricLippert说得对。在这种情况下,返回
-0.0
可能很有用,但我怀疑OP对这种怪癖不感兴趣。