比较不包含零的值

本文关键字:包含零 比较 | 更新日期: 2023-09-27 18:16:12

我有6个双精度值x,y,z,a,b,c。我需要在它们每次变化时取最小值。

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

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

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

 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.

比较不包含零的值

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

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