【问题标题】:finding min but zero找到最小值但为零
【发布时间】:2012-05-09 07:53:20
【问题描述】:

如何在双精度数组中找到最小的正数(非零)?比如数组包含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;
}

如何让它忽略零?

【问题讨论】:

  • 为什么会出错?在我看来,它是数组中最小的数字。
  • @BinyaminSharet 你向下滚动了吗? 7.719277021974478E-73 不是比那个小吗?
  • 不不不,E-X中的X越大,数字越小……这是科学计数法……
  • @BinyaminSharet 哦,我的数学不好 :) 好的,所以你的答案是对的 :)
  • @lonesome 请检查我的编辑,看看它是否更清晰并提出正确的问题。

标签: java arrays double min


【解决方案1】:

你可以检查为零:

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

【讨论】:

  • 不应该是Double.MIN_VALUE吗?
  • 不。如果你以Double.MIN_VALUE 开头,无论你的数组包含什么,你总是会得到它(Double.MIN_VALUE),如果你以Double.MAX_VALUE 开头,你会得到数组中最低的。
  • 我看过了,看我的评论。
猜你喜欢
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
  • 2019-04-27
  • 2020-10-17
  • 2014-10-26
相关资源
最近更新 更多