4

如何在双精度数组中找到最小的正数(非零)?例如,如果数组包含0.040.00010.0,我想返回0.0001

下面的函数很好,但它会返回零作为最小值,这不是我的兴趣。

static double[] absOfSub = new double[100];
...

private static double compare(double[] ds) {
  double min = absOfSub[0];

  for (double d : ds) {
    min = Math.min(min, d);
  }
  return min;
}

我怎样才能让它忽略零?

4

1 回答 1

7

您可以检查零:

double min = Double.MAX_VALUE;
for (double d : ds) 
{
    min = (d == 0) ? min : Math.min(min, d);
}
于 2012-04-29T04:42:57.163 回答