Java 求最小但为零

Java 求最小但为零,java,arrays,double,min,Java,Arrays,Double,Min,如何在一个双精度数组中找到最小的正(非零)数?例如,如果数组包含0.04、0.0001和0.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.

如何在一个双精度数组中找到最小的正(非零)数?例如,如果数组包含
0.04
0.0001
0.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;
}

如何使其忽略零?

您可以检查零:

double min = Double.MAX_VALUE;
for (double d : ds) 
{
    min = (d == 0) ? min : Math.min(min, d);
}

它不应该是两倍的最小值吗?不。如果以
Double.MIN\u值
开始,无论数组包含什么内容,都会得到结果(
Double.MIN\u值
),如果以
Double.MAX\u值
开始,则会得到数组中的最低值。我已经查看了,请参阅我的注释。为什么它是错误的?在我看来,这似乎是数组中最低的数字。@BinyaminSharet你向下滚动了吗?7.719277021974478E-73不是比那个小吗?不,不,在
E-X
中的X越大,数字越小。。。这是科学记数法…@BinyaminSharet噢,我的数学不好:)好吧,那么你的答案是对的:)@lonesome请检查我的编辑,看看是否更清晰,并问正确的问题。