Java Double.compareTo()

以数字方式比较两个 Double 对象.

初见版本

1.2

定义

public int compareTo(Double anotherDouble)

参数

参数类型参数名称参数描述
DoubleanotherDouble要比较的另一个 Double

返回值

若:

  • 当前浮点数大于 anotherDouble, 返回大于 0 的数字;
  • 当前浮点数等于 anotherDouble, 返回 0;
  • 当前浮点数小于 anotherDouble, 返回小于 0 的数字.

说明

当应用于原始 double 值时, 此方法执行的比较与 Java 语言数值比较运算符(<、<=、==、>=、>)执行的比较有两种不同之处:

  1. 此方法认为 Double.NaN 等于其自身并且大于所有其他双精度值(包括 Double.POSITIVE_INFINITY)
  2. 此方法认为 0.0d 大于 -0.0d (负0)

这样可以保证由此方法增强计算的 Double 对象的自然排序结果与 equals() 一致

本方法由 Comparable<Double> 接口的 compareTo() 方法指定实现

示例

使用 compareTo() 比较两个双精度浮点数的大小

package com.yi21.Double;

public class Yi21DoubleCompareTo {

    public static void main(String[] args) {
        
        myCompareTo(Double.NaN, Double.POSITIVE_INFINITY);
        myCompareTo(0.0, -0.0);
        myCompareTo(10.0, 7.2);
        myCompareTo(1.0, Double.NEGATIVE_INFINITY);
        myCompareTo(Double.NaN, Double.NaN);

    }

    private static void myCompareTo(Double d1, Double d2) {

        int r = d1.compareTo(d2);
        String operation = "";
        if(r > 0) {
            operation = "大";
        } else if(r < 0) {
            operation = "小";
        } else {
            operation = "等";
        }

        System.out.println(d1 + " " + operation + "于 " + d2);
    }

}

执行结果为 :

NaN 大于 Infinity
0.0 大于 -0.0
10.0 大于 7.2
1.0 大于 -Infinity
NaN 等于 NaN