我一直試圖繪製y^2 = 4 * a * x的函數,但是我遇到了一個問題。當我使用math.sqrt函數來查找具有兩個答案的值的平方根時,我只能得到正值。即如果我找到4的sqrt,它會返回+2而不是+或-2。math.sqrt的返回值
任何幫助將深表謝意。
我一直試圖繪製y^2 = 4 * a * x的函數,但是我遇到了一個問題。當我使用math.sqrt函數來查找具有兩個答案的值的平方根時,我只能得到正值。即如果我找到4的sqrt,它會返回+2而不是+或-2。math.sqrt的返回值
任何幫助將深表謝意。
如果你讀the doc(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;
}
您可以將答案乘以-1也得到兩者。
如果你真的想返回正反兩方面的平方根函數,你可以寫你自己很容易:
public static double[] Sqrts(double d) {
var v = Math.Sqrt(d);
return v == 0 ? new[] { v } : new[] { v, -v };
}
如果你取零的平方根? –
@EricLippert好點。在這種情況下,它*可能會有用返回一個「-0.0」,但我懷疑OP對這些怪癖並不感興趣。 –
因爲這是該函數的定義...如果你想負值,你總是可以反轉你得到它... – Servy
你如何期望函數返回±2?你在使用量子計算機嗎? – Kevin