阅读(1240) (0)

鸿蒙OS Double

2022-04-28 15:50:56 更新

Double

java.lang.Object

|---java.lang.Number

|---|---java.lang.Double

public final class Double
extends Number
implements Comparable<Double>

Double 类将原始类型 double 的值包装在一个对象中。 Double 类型的对象包含一个类型为 double 的单个字段。

此外,该类提供了几种将 double 转换为 String 和 String 转换为 double 的方法,以及在处理 double 时有用的其他常量和方法。

字段摘要

修饰符和类型 字段 描述
static int BYTES 用于表示双精度值的字节数。
static int MAX_EXPONENT 有限双精度变量可能具有的最大指数。
static double MAX_VALUE 一个保持双精度类型的最大正有限值的常数,(2-2-52)·21023。
static int MIN_EXPONENT 标准化双精度变量可能具有的最小指数。
static double MIN_NORMAL 一个常数,保持双精度类型的最小正正常值,2-1022。
static double MIN_VALUE 一个保持双精度类型的最小正非零值 2-1074 的常数。
static double NaN 一个保持双精度类型的非数字 (NaN) 值的常量。
static double NEGATIVE_INFINITY 一个保持双精度负无穷大的常数。
static double POSITIVE_INFINITY 一个保持 double 类型的正无穷大的常数。
static int SIZE 用于表示双精度值的位数。
static Class<Double> TYPE 表示基本类型 double 的 Class 实例。

构造函数摘要

构造函数 描述
Double(double value) 构造一个新分配的 Double 对象,该对象表示原始 double 参数。
Double(String s) 构造一个新分配的 Double 对象,该对象表示由字符串表示的 double 类型的浮点值。

方法总结

修饰符和类型 方法 描述
byte byteValue() 在缩小原始转换后,将此 Double 的值作为字节返回。
static int compare(double d1, double d2) 比较两个指定的双精度值。
int compareTo(Double anotherDouble) 以数字方式比较两个 Double 对象。
static long doubleToLongBits(double value) 根据 IEEE 754 浮点“双格式”位布局返回指定浮点值的表示。
static long doubleToRawLongBits(double value) 根据 IEEE 754 浮点“双格式”位布局返回指定浮点值的表示,保留非数字 (NaN) 值。
double doubleValue() 返回此 Double 对象的双精度值。
boolean equals(Object obj) 将此对象与指定对象进行比较。
float floatValue() 在缩小原始转换后,将此 Double 的值作为浮点数返回。
int hashCode() 返回此 Double 对象的哈希码。
static int hashCode(double value) 返回双精度值的哈希码; 与 Double.hashCode() 兼容。
int intValue() 在缩小原始转换后,将此 Double 的值作为 int 返回。
static boolean isFinite(double d) 如果参数是有限浮点值,则返回 true; 否则返回 false(对于 NaN 和无穷大参数)。
boolean isInfinite() 如果此 Double 值的大小无限大,则返回 true,否则返回 false。
static boolean isInfinite(double v) 如果指定的数字在数量级上无限大,则返回 true,否则返回 false。
boolean isNaN() 如果此 Double 值是非数字 (NaN),则返回 true,否则返回 false。
static boolean isNaN(double v) 如果指定的数字是非数字 (NaN) 值,则返回 true,否则返回 false。
static double longBitsToDouble(long bits) 返回对应于给定位表示的双精度值。
long longValue() 在窄化原始转换之后将此 Double 的值作为 long 返回。
static double max(double a, double b) 返回两个双精度值中的较大者,就像调用 Math#max(double, double) 一样。
static double min(double a, double b) 如同调用 Math#min(double, double) 一样返回两个 double 值中较小的一个。
static double parseDouble(String s) 返回一个新的 double,初始化为由指定 String 表示的值,由 Double 类的 valueOf 方法执行。
short shortValue() 在缩小原始转换之后,将此 Double 的值作为一个短值返回。
static double sum(double a, double b) 根据 + 运算符将两个双精度值相加。
static String toHexString(double d) 返回双参数的十六进制字符串表示。
String toString() 返回此 Double 对象的字符串表示形式。
static String toString(double d) 返回双参数的字符串表示形式。
static Double valueOf(double d) 返回表示指定双精度值的 Double 实例。
static Double valueOf(String s) 返回一个 Double 对象,该对象包含由参数字符串 s 表示的双精度值。
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait

字段详情

BYTES

public static final int BYTES

用于表示双精度值的字节数。

MAX_EXPONENT

public static final int MAX_EXPONENT

有限双精度变量可能具有的最大指数。 它等于 Math.getExponent(Double.MAX_VALUE) 返回的值。

MAX_VALUE

public static final double MAX_VALUE

一个保持双精度类型的最大正有限值的常数,(2-2-52)·21023。 它等于十六进制浮点文字 0x1.fffffffffffffP+1023,也等于 Double.longBitsToDouble(0x7fefffffffffffffL)。

MIN_EXPONENT

public static final int MIN_EXPONENT

标准化双精度变量可能具有的最小指数。 它等于 Math.getExponent(Double.MIN_NORMAL) 返回的值。

MIN_NORMAL

public static final double MIN_NORMAL

一个常数,保持双精度类型的最小正正常值,2-1022。 它等于十六进制浮点文字 0x1.0p-1022,也等于 Double.longBitsToDouble(0x0010000000000000L)。

MIN_VALUE

public static final double MIN_VALUE

一个保持双精度类型的最小正非零值 2-1074 的常数。 它等于十六进制浮点文字 0x0.0000000000001P-1022,也等于 Double.longBitsToDouble(0x1L)。

NEGATIVE_INFINITY

public static final double NEGATIVE_INFINITY

一个保持双精度负无穷大的常数。 它等于 Double.longBitsToDouble(0xfff0000000000000L) 返回的值。

NaN

public static final double NaN

一个保持双精度类型的非数字 (NaN) 值的常量。 它相当于 Double.longBitsToDouble(0x7ff8000000000000L) 返回的值。

POSITIVE_INFINITY

public static final double POSITIVE_INFINITY

一个保持 double 类型的正无穷大的常数。 它等于 Double.longBitsToDouble(0x7ff0000000000000L) 返回的值。

SIZE

public static final int SIZE

用于表示双精度值的位数。

TYPE

public static final ClassDouble TYPE

表示基本类型 double 的 Class 实例。

构造函数详细信息

Double

public Double(double value)

构造一个新分配的 Double 对象,该对象表示原始 double 参数。

参数:

参数名称 参数描述
value Double 表示的值。

Double

public Double(String s) throws NumberFormatException

构造一个新分配的 Double 对象,该对象表示由字符串表示的 double 类型的浮点值。 字符串被转换为双精度值,就像通过 valueOf 方法一样。

参数:

参数名称 参数描述
s 要转换为 Double 的字符串。

Throws:

Throw名称 Throw描述
NumberFormatException 如果字符串不包含可解析的数字。

方法详情

toString

public static String toString(double d)

返回双参数的字符串表示形式。 下面提到的所有字符都是 ASCII 字符。

  • 如果参数为 NaN,则结果为字符串“NaN”。

  • 否则,结果是一个字符串,表示参数的符号和大小(绝对值)。 如果符号为负,则结果的第一个字符为'-'('\u002D'); 如果符号为正,则结果中不会出现符号字符。 至于幅度

m:

  • 如果m为无穷大,则用字符“Infinity”表示; 因此,正无穷产生结果“Infinity”,负无穷产生结果“-Infinity”。
  • 如果 m 为零,则用字符“0.0”表示; 因此,负零产生结果“-0.0”,正零产生结果“0.0”。
  • 如果 m 大于或等于 10-3 但小于 107,则表示为 m 的整数部分,以十进制形式表示,不带前导零,后跟“.”。 ('\u002E'),后跟一个或多个小数位,表示 m 的小数部分。
  • 如果 m 小于 10-3 或大于或等于 107,则它以所谓的“计算机科学计数法”表示。 令 n 为唯一整数,使得 10n ≤ m < 10n+1; 然后让 a 是 m 和 10n 的数学精确商,使得 1 ≤ a < 10。然后将大小表示为 a 的整数部分,作为单个十进制数字,后跟“。” ('\u002E'),后跟表示 a 小数部分的十进制数字,然后是字母 'E' ('\u0045'),然后是 n 表示为十进制整数,由 Integer# 方法生成 到字符串(整数)。

m 或 a 的小数部分必须打印多少位? 必须至少有一个数字来表示小数部分,除此之外,必须有尽可能多的数字,但仅能将参数值与相邻的 double 类型值区分开来。 也就是说,假设 x 是由该方法为有限非零参数 d 生成的十进制表示所表示的精确数学值。 那么 d 必须是最接近 x 的 double 值; 或者如果两个双精度值同样接近 x,则 d 必须是其中之一,并且 d 的有效位的最低有效位必须为 0。

要创建浮点值的本地化字符串表示,请使用 NumberFormat 的子类。

参数:

参数名称 参数描述
d 要转换的双精度。

返回:

参数的字符串表示。

toHexString

public static String toHexString(double d)

返回双参数的十六进制字符串表示。 下面提到的所有字符都是 ASCII 字符。

  • 如果参数为 NaN,则结果为字符串“NaN”。

  • 否则,结果是一个字符串,表示参数的符号和大小。 如果符号为负,则结果的第一个字符为'-'('\u002D'); 如果符号为正,则结果中不会出现符号字符。 至于幅度

m:

  • 如果m为无穷大,则用字符串“Infinity”表示; 因此,正无穷产生结果“Infinity”,负无穷产生结果“-Infinity”。
  • 如果 m 为零,则用字符串“0x0.0p0”表示; 因此,负零产生结果“-0x0.0p0”,正零产生结果“0x0.0p0”。
  • 如果 m 是具有标准化表示的双精度值,则使用子字符串来表示有效数字和指数字段。 有效数字由字符“0x1”表示。 后跟小写十六进制表示的有效数字的其余部分作为分数。 除非所有数字都为零,否则十六进制表示中的尾随零被删除,在这种情况下使用单个零。 接下来,指数由“p”表示,后跟无偏指数的十进制字符串,就好像通过对指数值调用 Integer#toString(int) 产生的一样。
  • 如果 m 是具有次正规表示的双精度值,则有效数字由字符“0x0”表示。 后跟以分数表示的其余有效数字的十六进制表示。 十六进制表示中的尾随零被删除。 接下来,指数由“p-1022”表示。 请注意,次正规有效数中必须至少有一个非零数字。

参数:

参数名称 参数描述
d 要转换的双精度。

返回:

参数的十六进制字符串表示。

valueOf

public static Double valueOf(String s) throws NumberFormatException

返回一个 Double 对象,该对象包含由参数字符串 s 表示的双精度值。

如果 s 为 null,则抛出 NullPointerException。

s 中的前导和尾随空白字符被忽略。就像使用 String#trim 方法一样删除空格;也就是说,ASCII 空格和控制字符都被删除了。 s 的其余部分应构成一个 FloatValue,如词法语法规则所述:

浮点值:

签署 NaN

Signopt Infinity

Signopt FloatingPointLiteral

Signopt HexFloatingPointLiteral

有符号整数

HexFloatingPointLiteral:

HexSignificand BinaryExponent FloatTypeSuffixopt

十六进制符号:

十六进制数

十六进制数。

0x 十六进制数字选择。十六进制数

0X 十六进制数字选择。十六进制数

二进制指数:

BinaryExponentIndicator 有符号整数

BinaryExponentIndicator:

p

其中 Sign、FloatingPointLiteral、HexNumeral、HexDigits、SignedInteger 和 FloatTypeSuffix 与《Java™ 语言规范》的词法结构部分中的定义相同,但数字之间不接受下划线。如果 s 不具有 FloatValue 的形式,则抛出 NumberFormatException。否则,s 被视为代表通常的“计算机科学记数法”中的精确十进制值或精确的十六进制值;然后,这个精确的数值在概念上被转换为“无限精确”的二进制值,然后通过 IEEE 754 浮点算术的通常舍入到最近的规则将其舍入为 double 类型,其中包括保留零值的符号。请注意,四舍五入规则也意味着溢出和下溢行为;如果 s 的精确值在量级上足够大(大于或等于 (MAX_VALUE + Math#ulp(double)/2),则四舍五入到 double 将导致无穷大,并且如果 s 的精确值在量级上足够小(小于或等于 MIN_VALUE/2),四舍五入到浮点数将导致零。最后,四舍五入后返回一个表示该双精度值的 Double 对象。

要解释浮点值的本地化字符串表示,请使用 NumberFormat 的子类。

请注意,尾随格式说明符、确定浮点文字类型的说明符(1.0f 是浮点值;1.0d 是双精度值)不会影响此方法的结果。也就是说,输入字符串的数值直接转换为目标浮点类型。两步转换序列,即字符串到浮点数,然后是浮点数到双精度数,并不等同于将字符串直接转换为双精度数。例如,浮点文字 0.1f 等于双精度值 0.10000000149011612; float 文字 0.1f 表示与 double 文字 0.1 不同的数值。 (数值 0.1 不能用二进制浮点数精确表示。)

为避免在无效字符串上调用此方法并引发 NumberFormatException,可以使用下面的正则表达式来筛选输入字符串:

  final String Digits     = "(\\p{Digit}+)";
  final String HexDigits  = "(\\p{XDigit}+)";
  // an exponent is 'e' or 'E' followed by an optionally
  // signed decimal integer.
  final String Exp        = "[eE][+-]?"+Digits;
  final String fpRegex    =
      ("[\\x00-\\x20]*"+  // Optional leading "whitespace"
       "[+-]?(" + // Optional sign character
       "NaN|" +           // "NaN" string
       "Infinity|" +      // "Infinity" string


       // A decimal floating-point string representing a finite positive
       // number without a leading sign has at most five basic pieces:
       // Digits . Digits ExponentPart FloatTypeSuffix
       //
       // Since this method allows integer-only strings as input
       // in addition to strings of floating-point literals, the
       // two sub-patterns below are simplifications of the grammar
       // productions from section 3.10.2 of
       // The Java Language Specification.


       // Digits ._opt Digits_opt ExponentPart_opt FloatTypeSuffix_opt
       "((("+Digits+"(\\.)?("+Digits+"?)("+Exp+")?)|"+


       // . Digits ExponentPart_opt FloatTypeSuffix_opt
       "(\\.("+Digits+")("+Exp+")?)|"+


       // Hexadecimal strings
       "((" +
        // 0[xX] HexDigits ._opt BinaryExponent FloatTypeSuffix_opt
        "(0[xX]" + HexDigits + "(\\.)?)|" +


        // 0[xX] HexDigits_opt . HexDigits BinaryExponent FloatTypeSuffix_opt
        "(0[xX]" + HexDigits + "?(\\.)" + HexDigits + ")" +


        ")[pP][+-]?" + Digits + "))" +
       "[fFdD]?))" +
       "[\\x00-\\x20]*");// Optional trailing "whitespace"


  if (Pattern.matches(fpRegex, myString))
      Double.valueOf(myString); // Will not throw NumberFormatException
  else {
      // Perform suitable alternative action
  }

参数:

参数名称 参数描述
s 要解析的字符串。

返回:

一个 Double 对象,保存由 String 参数表示的值。

Throws:

Throw名称 Throw描述
NumberFormatException 如果字符串不包含可解析的数字。

valueOf

public static Double valueOf(double d)

返回表示指定双精度值的 Double 实例。 如果不需要新的 Double 实例,则通常应优先使用此方法而不是构造函数 Double(double),因为此方法可能会通过缓存频繁请求的值来显着提高空间和时间性能。

参数:

参数名称 参数描述
d 一个双值。

返回:

代表 d 的 Double 实例。

parseDouble

public static double parseDouble(String s) throws NumberFormatException

返回一个新的 double,初始化为由指定 String 表示的值,由 Double 类的 valueOf 方法执行。

参数:

参数名称 参数描述
s 要解析的字符串。

返回:

字符串参数表示的双精度值。

Throws:

Throw名称 Throw描述
NullPointerException 如果字符串为空
NumberFormatException 如果字符串不包含可解析的双精度。

isNaN

public static boolean isNaN(double v)

如果指定的数字是非数字 (NaN) 值,则返回 true,否则返回 false。

参数:

参数名称 参数描述
v 要测试的值。

返回:

如果参数的值为 NaN,则为 true; 否则为假。

isInfinite

public static boolean isInfinite(double v)

如果指定的数字在数量级上无限大,则返回 true,否则返回 false。

参数:

参数名称 参数描述
v 要测试的值。

返回:

如果参数的值为正无穷大或负无穷大,则为真; 否则为假。

isFinite

public static boolean isFinite(double d)

如果参数是有限浮点值,则返回 true; 否则返回 false(对于 NaN 和无穷大参数)。

参数:

参数名称 参数描述
d 要测试的双精度值

返回:

如果参数是有限浮点值,则为 true,否则为 false。

isNaN

public boolean isNaN()

如果此 Double 值是非数字 (NaN),则返回 true,否则返回 false。

返回:

如果此对象表示的值为 NaN,则为 true; 否则为假。

isInfinite

public boolean isInfinite()

如果此 Double 值的大小无限大,则返回 true,否则返回 false。

返回:

如果此对象表示的值是正无穷大或负无穷大,则为真; 否则为假。

toString

public String toString()

返回此 Double 对象的字符串表示形式。 由该对象表示的原始双精度值完全转换为字符串,就好像通过一个参数的 toString 方法一样。

覆盖:

类 Object 中的 toString

返回:

此对象的字符串表示形式。

byteValue

public byte byteValue()

在缩小原始转换后,将此 Double 的值作为字节返回。

覆盖:

类 Number 中的 byteValue

返回:

此对象表示的双精度值转换为字节类型

shortValue

public short shortValue()

在缩小原始转换之后,将此 Double 的值作为一个短值返回。

覆盖:

类 Number 中的 shortValue

返回:

此对象表示的双精度值转换为类型短

intValue

public int intValue()

在缩小原始转换后,将此 Double 的值作为 int 返回。

指定者:

类 Number 中的 intValue

返回:

此对象表示的 double 值转换为 int 类型

longValue

public long longValue()

在窄化原始转换之后将此 Double 的值作为 long 返回。

指定者:

类 Number 中的 longValue

返回:

此对象表示的 double 值转换为 long 类型

floatValue

public float floatValue()

在缩小原始转换后,将此 Double 的值作为浮点数返回。

指定者:

类 Number 中的 floatValue

返回:

此对象表示的 double 值转换为 float 类型

doubleValue

public double doubleValue()

返回此 Double 对象的双精度值。

指定者:

类 Number 中的 doubleValue

返回:

此对象表示的双精度值

hashCode

public int hashCode()

返回此 Double 对象的哈希码。 结果是长整数位表示的两半的异或,完全由方法 doubleToLongBits(double) 生成,该 Double 对象表示的原始双精度值。 也就是说,哈希码是表达式的值:

(int)(v^(v>>>32))

其中 v 定义为:

long v = Double.doubleToLongBits(this.doubleValue());

覆盖:

类 Object 中的 hashCode

返回:

此对象的哈希码值。

hashCode

public static int hashCode(double value)

返回双精度值的哈希码; 与 Double.hashCode() 兼容。

参数:

参数名称 参数描述
value 哈希值

返回:

双精度值的哈希码值。

equals

public boolean equals(Object obj)

将此对象与指定对象进行比较。 当且仅当参数不为 null 并且是一个 Double 对象,该对象表示一个与该对象表示的双精度具有相同值的双精度时,结果才为真。 为此,当且仅当方法 doubleToLongBits(double) 在应用于每个时返回相同的 long 值时,才认为两个 double 值相同。

请注意,在大多数情况下,对于 Double 类的两个实例 d1 和 d2,d1.equals(d2) 的值当且仅当

d1.doubleValue() == d2.doubleValue()

也有值 true。 但是,有两个例外:

  • 如果 d1 和 d2 都表示 Double.NaN,则 equals 方法返回 true,即使 Double.NaN==Double.NaN 的值为 false。
  • 如果 d1 代表 +0.0 而 d2 代表 -0.0,或反之亦然,则相等测试的值为 false,即使 +0.0==-0.0 的值为 true。

此定义允许哈希表正常运行。

覆盖:

类 Object 中的等于

参数:

参数名称 参数描述
obj 比较的对象。

返回:

如果对象相同,则为 true; 否则为假。

doubleToLongBits

public static long doubleToLongBits(double value)

根据 IEEE 754 浮点“双格式”位布局返回指定浮点值的表示。

位 63(由掩码 0x8000000000000000L 选择的位)表示浮点数的符号。 位 62-52(由掩码 0x7ff0000000000000L 选择的位)表示指数。 位 51-0(由掩码 0x000fffffffffffffL 选择的位)表示浮点数的有效位(有时称为尾数)。

如果参数为正无穷大,则结果为 0x7ff0000000000000L。

如果参数为负无穷大,则结果为 0xfff0000000000000L。

如果参数为 NaN,则结果为 0x7ff8000000000000L。

在所有情况下,结果都是一个长整数,当将它提供给 longBitsToDouble(long) 方法时,将产生一个与 doubleToLongBits 的参数相同的浮点值(除了所有 NaN 值都折叠为单个“规范”NaN 价值)。

参数:

参数名称 参数描述
value 双精度浮点数。

返回:

表示浮点数的位。

doubleToRawLongBits

public static long doubleToRawLongBits(double value)

根据 IEEE 754 浮点“双格式”位布局返回指定浮点值的表示,保留非数字 (NaN) 值。

位 63(由掩码 0x8000000000000000L 选择的位)表示浮点数的符号。位 62-52(由掩码 0x7ff0000000000000L 选择的位)表示指数。位 51-0(由掩码 0x000fffffffffffffL 选择的位)表示浮点数的有效位(有时称为尾数)。

如果参数为正无穷大,则结果为 0x7ff0000000000000L。

如果参数为负无穷大,则结果为 0xfff0000000000000L。

如果参数是 NaN,则结果是表示实际 NaN 值的长整数。与 doubleToLongBits 方法不同,doubleToRawLongBits 不会将所有编码 NaN 的位模式折叠为单个“规范”NaN 值。

在所有情况下,结果都是一个长整数,当给 longBitsToDouble(long) 方法时,将产生一个与 doubleToRawLongBits 的参数相同的浮点值。

参数:

参数名称 参数描述
value 双精度浮点数。

返回:

表示浮点数的位。

longBitsToDouble

public static double longBitsToDouble(long bits)

返回对应于给定位表示的双精度值。 根据 IEEE 754 浮点“双格式”位布局,该参数被认为是浮点值的表示。

如果参数为 0x7ff0000000000000L,则结果为正无穷大。

如果参数为 0xfff0000000000000L,则结果为负无穷大。

如果参数是 0x7ff0000000000001L 至 0x7fffffffffffffffL 范围内或 0xfff0000000000001L 至 0xffffffffffffffffL 范围内的任何值,则结果为 NaN。 Java 提供的任何 IEEE 754 浮点运算都无法区分具有不同位模式的相同类型的两个 NaN 值。 NaN 的不同值只能通过使用 Double.doubleToRawLongBits 方法来区分。

在所有其他情况下,让 s、e 和 m 是可以从参数计算的三个值:

 int s = ((bits >> 63) == 0) ? 1 : -1;
 int e = (int)((bits >> 52) & 0x7ffL);
 long m = (e == 0) ?
                 (bits & 0xfffffffffffffL) << 1 :
                 (bits & 0xfffffffffffffL) | 0x10000000000000L;

那么浮点结果等于数学表达式s·m·2e-1075的值。

请注意,此方法可能无法返回与 long 参数具有完全相同的位模式的双 NaN。 IEEE 754 区分了两种 NaN,静默 NaN 和信令 NaN。这两种 NaN 之间的差异在 Java 中通常是不可见的。信号 NaN 的算术运算将它们变成安静的 NaN,具有不同但通常相似的位模式。但是,在某些处理器上,仅复制信号 NaN 也会执行该转换。特别是,复制一个信令 NaN 以将其返回给调用方法可以执行此转换。因此 longBitsToDouble 可能无法返回带有信号 NaN 位模式的双精度数。因此,对于某些 long 值,doubleToRawLongBits(longBitsToDouble(start)) 可能不等于 start。此外,哪些特定的位模式代表信令 NaN 取决于平台;尽管所有 NaN 位模式,安静或信令,都必须在上面确定的 NaN 范围内。

参数:

参数名称 参数描述
bits 任何长整数。

返回:

具有相同位模式的双精度浮点值。

compareTo

public int compareTo(Double anotherDouble)

以数字方式比较两个 Double 对象。 当应用于原始双精度值时,此方法执行的比较与 Java 语言数值比较运算符(<、<=、==、>=、>)执行的比较有两种不同之处:

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

这确保了此方法强加的 Double 对象的自然排序与 equals 一致。

指定者:

接口 ComparableDouble 中的 compareTo

参数:

参数名称 参数描述
anotherDouble 要比较的 Double。

返回:

如果 anotherDouble 在数值上等于此 Double,则值为 0; 如果此 Double 在数值上小于 anotherDouble,则值小于 0; 如果此 Double 在数值上大于 anotherDouble,则值大于 0。

compare

public static int compare(double d1, double d2)

比较两个指定的双精度值。 返回的整数值的符号与调用将返回的整数的符号相同:

new Double(d1).compareTo(new Double(d2)) 

参数:

参数名称 参数描述
d1 第一个要比较的双精度
d2 第二个要比较的双精度

返回:

如果 d1 在数值上等于 d2,则值为 0; 如果 d1 在数值上小于 d2,则值小于 0; 如果 d1 在数值上大于 d2,则值大于 0。

sum

public static double sum(double a, double b)

根据 + 运算符将两个双精度值相加。

参数:

参数名称 参数描述
a 第一个操作数
b 第二个操作数

返回:

a 和 b 的和

max

public static double max(double a, double b)

返回两个双精度值中的较大者,就像调用 Math#max(double, double) 一样。

参数:

参数名称 参数描述
a 第一个操作数
b 第二个操作数

返回:

a 和 b 中的较大的一个。

min

public static double min(double a, double b)

如同调用 Math#min(double, double) 一样返回两个 double 值中较小的一个。

参数:

参数名称 参数描述
a 第一个操作数
b 第二个操作数

返回:

a 和 b 中较小的一个。