Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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# math.sqrt的返回值_C#_Function_Return_Math.sqrt - Fatal编程技术网

C# math.sqrt的返回值

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)

我一直试图画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);
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对这种怪癖不感兴趣。