2016-04-29 9 views
-1

トレーニングデータを含むファイルから間隔を計算する方法があります。インターバルを把握するためのスパイクやパワーの低下を検出し、各インターバルの平均を計算する方法を開発しています。ここでの方法である:forループを合計して合計する - 合計は常に0です。

public void getIntervalData() 
     { 
      //Remove first drop anomaly 
      drops.Remove(0);   
      int intervalAltitude; 
      int intervalPower; 
      int intervalSpeed; 
      int altitudeAddUp = 0; 
      int powerAddUp = 0; 
      int speedAddUp = 0; 
      int counter = 0; 
      //Loop through to get all spikes and drops 
      for (int j = 0; j < spikes.Count(); j++) 
      {     
       int firstNumber = Convert.ToInt32(spikes[j]); 
       int secondNumber = Convert.ToInt32(drops[j]); 
       MessageBox.Show(firstNumber.ToString()); 
       counter++; 
       //Difference to work out averages 
       int difference = secondNumber - firstNumber;  
       //Get seperate interval data (first number = spike, second number = drop) 
       for (int i = firstNumber; i < secondNumber; i++) 
       {      
        int altitudeNumber = altitudeList[i]; 
        int powerNumber = powerList[i]; 
        int speedNumber = Convert.ToInt32(speedList[i]);     
        //Add up data 
        altitudeAddUp += altitudeNumber;  
        powerAddUp += powerNumber; 
        speedAddUp += speedNumber;      
       } 
       MessageBox.Show("Alt add up:" + altitudeAddUp.ToString()); 
       intervalAltitude = altitudeAddUp/difference; 
       intervalPower = powerAddUp/difference; 
       intervalSpeed = speedAddUp/difference; 
       intervalAverages.Add(new Tuple<int, int, int>(intervalAltitude, intervalPower, intervalSpeed)); 
       MessageBox.Show("Interval: " + counter.ToString() + ": Avgs: " + intervalAverages[0]); 
      } 
      MessageBox.Show("Interval averages added. There were: " + counter + " intervals"); 
     } 

altitudeAddUp、powerAddUpとspeedAddUpは常に0ですが、それは合算いない理由を私は理解することはできません。おそらくルーキーなエラーだと私はそれを見ることはできません。

私はaltitudeNumber、powerNumberとspeedNumberにデータが含まれており、彼らが行うかどうかをテストするために、以前にメッセージボックスを使用しましたが、それはアップ追加されません。

+1

彼らは整数であるように、このライン上の 'intervalSpeed = speedAddUp /違い可能性があります。 'または0に丸められた小数点を分割して作成する別の同様のものです。 –

+2

' firstNumber

+0

が示唆しているように、secondNumberが cameronjchurch

答えて

1

私はこの問題は、すべての変数が整数であるということだと思います。そして、整数は任意の10進精度を持っていない、それは(0.999整数として存在していないあなたがToInt32を呼び出すときに、値に切り捨てられます)間隔が0.999であれば、実際の整数値が0であることを意味します。

精度と範囲の必要性に応じて、float,doubleまたはdecimalを使用してください。

+0

OPによると、問題は 'intervalXY'ではなく' xyAddUp'変数 –

+0

です。値は 'toInt32'で' spikes [j] 'から読み込まれます。それも '0'をもたらすことができます。 –

+0

正確に - 'altitudeAddUp、powerAddUpおよびspeedAddUpの文は常に0です。'という記述が偽でない限り、おそらく分割問題ではありません。 –

関連する問題