2013-08-23 77 views
-5

我一直試圖繪製y^2 = 4 * a * x的函數,但是我遇到了一個問題。當我使用math.sqrt函數來查找具有兩個答案的值的平方根時,我只能得到正值。即如果我找到4的sqrt,它會返回+2而不是+或-2。math.sqrt的返回值

任何幫助將深表謝意。

+5

因爲這是該函數的定義...如果你想負值,你總是可以反轉你得到它... – Servy

+0

你如何期望函數返回±2?你在使用量子計算機嗎? – Kevin

回答

0

如果你讀the doc(MSDN真的是完整的,製作精良,提問之前使用它),你會看到有一個參數0或正,Math.Sqrt僅返回「正方形d的根。

如果您需要的負值,你必須自己做,比如像這樣:

double value = 4; 
double positiveSqrt = Math.Sqrt(value); 
double negativeSqrt = positiveSqrt * -1; 
2

您可以編寫自己的方法來返回兩個值:

public static IEnumerable<double> Sqrt(double d) 
{ 
    var result = Math.Sqrt(d); 
    yield return result; 
    yield return -result; 
} 
1

您可以將答案乘以-1也得到兩者。

0

如果你真的想返回正反兩方面的平方根函數,你可以寫你自己很容易:

public static double[] Sqrts(double d) { 
    var v = Math.Sqrt(d); 
    return v == 0 ? new[] { v } : new[] { v, -v }; 
} 
+0

如果你取零的平方根? –

+0

@EricLippert好點。在這種情況下,它*可能會有用返回一個「-0.0」,但我懷疑OP對這些怪癖並不感興趣。 –