2014-05-02 39 views
0
public double calculateStdErrorEst() 
{ 
    double see = 0; 
    double residualSquare = 0; 
    CultureInfo culture = new CultureInfo("en-US"); 
    List<double> residualTotal = new List<double>(); 

    try 
    { 
     for (int i = 0; i < stockPctReturns.Count; i++) 
     { 
      // square root of all sums of predicted - actual or market - stock 
      residualSquare = Math.Sqrt(Convert.ToDouble((marketPctReturns.ElementAt(i) - stockPctReturns.ElementAt(i)), culture)); 
      residualTotal.Add(Math.Round(residualSquare, 2, MidpointRounding.AwayFromZero)); 
     } 

     see = residualTotal.Sum()/(stockPctReturns.Count - 2); 
     see = Math.Sqrt(see); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 

    return Math.Round(see, 2, MidpointRounding.AwayFromZero); 
} 

正如你所看到的,我試圖將值減小到小數點,以便讓它們與它們一起工作,但無論我嘗試了什麼,繼續獲得NaN作爲唯一的結果。我在這裏錯過了什麼嗎?執行計算,但只得到NaN結果

+1

是什麼stockPctReturns和最新計數? –

+0

最佳猜想:你正試圖從負值獲得'Math.Sqrt'。 – MarcinJuraszek

+0

'Math.Sqrt'方法爲負數返回'NaN'。 – Dmitry

回答

4

您可能試圖從負值得到平方根,導致Math.Sqrt返回double.NaN。調用Math.Sqrt前使用Math.Abs

residualSquare = Math.Sqrt(Math.Abs(Convert.ToDouble((marketPctReturns.ElementAt(i) - stockPctReturns.ElementAt(i)), culture)));