比较值而不包括零?

时间:2013-05-29 21:29:04

标签: c# algorithm

我有6个双值x,y,z,a,b,c。每当他们改变时我都需要尽量减少。

到目前为止,我使用Math.Min()并通过检查是否等于零并使用List.min()将它们添加到列表中。但每次更改值时,list都不会自行更新。

这个过程正在检查数千次,我需要一个快速的方法。

  1. 检查所有变量。
  2. 如果其中一个或多个为0,请不要进行比较。
  3. 取其他最小值。
  4. 重复,按下按钮。
  5. 代码:

     private void calculateRatio()
     {
          xRatio = 100 * (xStepCount / xAbsoluteDelta);
          yRatio = 100 * (yStepCount / yAbsoluteDelta);
          zRatio = 100 * (zStepCount / zAbsoluteDelta);
          aRatio = 100 * (aStepCount / aAbsoluteDelta);
          bRatio = 100 * (bStepCount / bAbsoluteDelta);
          cRatio = 100 * (cStepCount / cAbsoluteDelta);
     }
    
     private void selectAxis()
     {  
         minRatio = 100 * (Math.Min((double)xRatio, Math.Min((double)yRatio,  Math.Min((double)zRatio, Math.Min((double)aRatio, Math.Min((double)bRatio, (double)cRatio))))));
     }
     //without including zero, by updating every time step count changed.
    

1 个答案:

答案 0 :(得分:3)

所以你想要一个能找到非零最小值的算法?试试这个:

IEnumerable<double> values = new[] { x, y, z, a, b, c };
double nonZeroMin = values.Where(v => v != 0).Min();