【问题标题】:Using Double.POSITIVE_INFINITY in Java to find minimum value在 Java 中使用 Double.POSITIVE_INFINITY 找到最小值
【发布时间】:2013-09-18 15:47:55
【问题描述】:

简单的问题:以下代码是否可以用于查找双精度数组中的最小值(假设至少存在一个值):

double[] values = ...

double currentMin = Double.POSITIVE_INFINITY;

for(int i = 0; i < values.length; i++) {
    if(values[i] < currentMin) {
        currentMin = values[i];
    }
}

return currentMin;

问题的关键在于,与其他(实际)双精度值以及潜在无穷大本身相比,POSITIVE_INFINITY 的行为是否符合预期。

【问题讨论】:

  • 你尝试的时候发生了什么?

标签: java double min minimum infinity


【解决方案1】:

使用 Double.POSITIVE_INFINITY 是安全的。来自the specification

除 NaN 以外的所有值都是有序的,负无穷小于 大于所有有限值,正无穷大于所有有限 价值观。

【讨论】:

    【解决方案2】:

    只需将最小值设置为数组的第一个元素 (values[0),因为您假设至少存在一个值。如果只有一个元素,则必须是最小值,否则将相应更新。

    【讨论】:

    • 显然可以,但这里真正的应用是一个二维值数组,其中任何一个都可能被标记为跳过。在这种情况下,没有方便使用的“第一个元素”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2015-02-01
    • 2020-06-17
    • 2015-04-01
    • 2012-05-05
    • 2019-11-20
    • 2013-10-31
    相关资源
    最近更新 更多