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请检查我的编辑,看看是否更清晰,并问正确的问题。