找到min但是零

lon*_*ome 3 java arrays double min

如何在双精度数组中找到最小的正(非零)数?例如,如果数组包含0.04,0.0001以及0.0,我要回0.0001.

下面的功能很好,但它会以min为单位返回零,这不是我感兴趣的.

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;
}
Run Code Online (Sandbox Code Playgroud)

如何让它忽略零?

MBy*_*ByD 5

你可以检查零:

double min = Double.MAX_VALUE;
for (double d : ds) 
{
    min = (d == 0) ? min : Math.min(min, d);
}
Run Code Online (Sandbox Code Playgroud)

  • 不.如果你从`Double.MIN_VALUE`开始,你将总是得到它(`Double.MIN_VALUE`),无论你的数组包含什么,如果你以'Double.MAX_VALUE`开头,你将得到最低的数组. (2认同)