モジュール java.base
パッケージ java.lang

クラスDouble

  • すべての実装されたインタフェース:
    Serializable, Comparable<Double>, Constable, ConstantDesc

    public final class Double
    extends Number
    implements Comparable<Double>, Constable, ConstantDesc
    Doubleクラスは、プリミティブ型doubleの値をオブジェクトにラップします。 Double型のオブジェクトには、型がdoubleの単一フィールドが含まれます。

    さらにこのクラスは、doubleStringに、Stringdoubleに変換する各種メソッドや、doubleの処理時に役立つ定数およびメソッドも提供します。

    導入されたバージョン:
    1.0
    関連項目:
    直列化された形式
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      static int BYTES
      double値を表すために使用されるバイト数です。
      static int MAX_EXPONENT
      有限のdouble変数が持つ可能性のある最大指数です。
      static double MAX_VALUE
      double型の正の最大有限値(2-2-52)·21023です。
      static int MIN_EXPONENT
      正規化されたdouble変数が持つ可能性のある最小指数です。
      static double MIN_NORMAL
      double型の正の最小標準値2-1022を保持する定数です。
      static double MIN_VALUE
      double型の正の最小非ゼロ値2-1074を保持する定数です。
      static double NaN
      double型の非数(NaN)値を保持する定数です。
      static double NEGATIVE_INFINITY
      double型の負の無限大値を保持する定数です。
      static double POSITIVE_INFINITY
      double型の正の無限大値を保持する定数です。
      static int SIZE
      double値を表すのに使われるビット数です。
      static Class<Double> TYPE
      プリミティブ型doubleを表すClassインスタンス。
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      Double​(double value)
      非推奨。
      このコンストラクタを使用することはほとんどありません。
      Double​(String s)
      非推奨。
      このコンストラクタを使用することはほとんどありません。
    • メソッドのサマリー

      修飾子と型 メソッド 説明
      byte byteValue()
      このDoubleの縮小プリミティブ変換後の値をbyteとして返します。
      static int compare​(double d1, double d2)
      指定された2つのdouble値を比較します。
      int compareTo​(Double anotherDouble)
      2つのDoubleオブジェクトを数値的に比較します。
      Optional<Double> describeConstable()
      このインスタンス自体の名目記述子を含むOptionalを返します。
      static long doubleToLongBits​(double value)
      IEEE 754浮動小数点の「ダブル・フォーマット(double format)」ビット・レイアウトに従って、指定された浮動小数点の値を表現して返します。
      static long doubleToRawLongBits​(double value)
      IEEE 754浮動小数点の「ダブル・フォーマット(double format)」ビット・レイアウトに従って、非数(NaN)値を保持する、指定された浮動小数点値の表現を返します。
      double doubleValue()
      このDoubleオブジェクトのdouble値を返します。
      boolean equals​(Object obj)
      このオブジェクトと指定されたオブジェクトを比較します。
      float floatValue()
      このDoubleの縮小プリミティブ変換後の値をfloatとして返します。
      int hashCode()
      このDoubleオブジェクトのハッシュ・コードを返します。
      static int hashCode​(double value)
      Double.hashCode()との互換性がある、double値のハッシュ・コードを返します。
      int intValue()
      このDoubleの縮小プリミティブ変換後の値をintとして返します。
      static boolean isFinite​(double d)
      引数が有限の浮動小数点値である場合はtrueを返し、そうでない場合(NaNおよび無限大の引数の場合)はfalseを返します。
      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)
      指定されたビット表現と対応するdouble値を返します。
      long longValue()
      このDoubleの縮小プリミティブ変換後の値をlongとして返します。
      static double max​(double a, double b)
      Math.maxを呼び出した場合と同様に、2つのdouble値の大きいほうを返します。
      static double min​(double a, double b)
      Math.minを呼び出した場合と同様に、2つのdouble値の小さいほうを返します。
      static double parseDouble​(String s)
      DoubleクラスのvalueOfメソッドを実行した場合と同様に、指定されたStringが表す値に初期化された新しいdouble値を返します。
      Double resolveConstantDesc​(MethodHandles.Lookup lookup)
      このインスタンスをConstantDescとして解決します。その結果がインスタンス自体です。
      short shortValue()
      このDoubleの縮小プリミティブ変換後の値をshortとして返します。
      static double sum​(double a, double b)
      +演算子のように、2つのdouble値を加算します。
      static String toHexString​(double d)
      double引数の16進数文字列表現を返します。
      String toString()
      このDoubleオブジェクトの文字列表現を返します。
      static String toString​(double d)
      double引数の文字列表現を返します。
      static Double valueOf​(double d)
      指定されたdouble値を表すDoubleインスタンスを返します。
      static Double valueOf​(String s)
      文字列引数sで表されるdouble値を保持するDoubleオブジェクトを返します。
    • フィールドの詳細

      • POSITIVE_INFINITY

        public static final double POSITIVE_INFINITY
        double型の正の無限大値を保持する定数です。 これは、Double.longBitsToDouble(0x7ff0000000000000L)から返される値と等しくなります。
        関連項目:
        定数フィールド値
      • NEGATIVE_INFINITY

        public static final double NEGATIVE_INFINITY
        double型の負の無限大値を保持する定数です。 これは、Double.longBitsToDouble(0xfff0000000000000L)から返される値と等しくなります。
        関連項目:
        定数フィールド値
      • NaN

        public static final double NaN
        double型の非数(NaN)値を保持する定数です。 これは、Double.longBitsToDouble(0x7ff8000000000000L)から返される値と等しくなります。
        関連項目:
        定数フィールド値
      • MAX_VALUE

        public static final double MAX_VALUE
        double型の正の最大有限値(2-2-52)·21023です。 16進数浮動小数点リテラル0x1.fffffffffffffP+1023と同等であり、Double.longBitsToDouble(0x7fefffffffffffffL)とも同等です。
        関連項目:
        定数フィールド値
      • MIN_NORMAL

        public static final double MIN_NORMAL
        double型の正の最小標準値2-1022を保持する定数です。 16進数浮動小数点リテラル0x1.0p-1022と同等であり、Double.longBitsToDouble(0x0010000000000000L)とも同等です。
        導入されたバージョン:
        1.6
        関連項目:
        定数フィールド値
      • MIN_VALUE

        public static final double MIN_VALUE
        double型の正の最小非ゼロ値2-1074を保持する定数です。 16進数浮動小数点リテラル0x0.0000000000001P-1022と同等であり、Double.longBitsToDouble(0x1L)とも同等です。
        関連項目:
        定数フィールド値
      • MAX_EXPONENT

        public static final int MAX_EXPONENT
        有限のdouble変数が持つ可能性のある最大指数です。 これは、Math.getExponent(Double.MAX_VALUE)から返される値と等しくなります。
        導入されたバージョン:
        1.6
        関連項目:
        定数フィールド値
      • MIN_EXPONENT

        public static final int MIN_EXPONENT
        正規化されたdouble変数が持つ可能性のある最小指数です。 これは、Math.getExponent(Double.MIN_NORMAL)から返される値と等しくなります。
        導入されたバージョン:
        1.6
        関連項目:
        定数フィールド値
      • SIZE

        public static final int SIZE
        double値を表すのに使われるビット数です。
        導入されたバージョン:
        1.5
        関連項目:
        定数フィールド値
      • BYTES

        public static final int BYTES
        double値を表すために使用されるバイト数です。
        導入されたバージョン:
        1.8
        関連項目:
        定数フィールド値
      • TYPE

        public static final Class<Double> TYPE
        プリミティブ型doubleを表すClassインスタンス。
        導入されたバージョン:
        1.1
    • コンストラクタの詳細

      • Double

        @Deprecated(since="9")
        public Double​(double value)
        非推奨。
        このコンストラクタを使用することはほとんどありません。 静的ファクトリvalueOf(double)は、より良いスペースと時間のパフォーマンスをもたらす可能性が高いため、通常はより良い選択です。
        プリミティブのdouble引数を表す、新しく割り当てられたDoubleオブジェクトを構築します。
        パラメータ:
        value - Doubleによって表される値。
      • Double

        @Deprecated(since="9")
        public Double​(String s)
               throws NumberFormatException
        非推奨。
        このコンストラクタを使用することはほとんどありません。 文字列をdoubleプリミティブに変換するにはparseDouble(String)を使用し、文字列をDoubleオブジェクトに変換するにはvalueOf(String)を使用します。
        文字列で表されるdouble型の浮動小数点を表す、新しく割り当てられるDoubleオブジェクトを構築します。 文字列は、valueOfメソッドと同様にdouble値に変換されます。
        パラメータ:
        s - Doubleに変換する文字列。
        例外:
        NumberFormatException - 文字列が解析可能な数値を含まない場合。
    • メソッドの詳細

      • toString

        public static String toString​(double d)
        double引数の文字列表現を返します。 次の文字はすべてASCII文字です。
        • 引数がNaNの場合、変換後の文字列は「NaN」。
        • そうでない場合、結果は、引数の符号および絶対値を表す文字列になります。 符号が負の場合、結果の文字列の最初の文字は「-」('\u002D')となり、符号が正の場合、結果の文字列に符号文字は表示されない。 絶対値mについては、次のとおり:
          • mが無限大の場合、これは文字列"Infinity"で表される。したがって、正の無限大の結果は"Infinity"、負の無限大の結果は"-Infinity"となる。
          • mがゼロの場合、これは文字列"0.0"で表される。したがって、負のゼロの結果は"-0.0"、正のゼロの結果は"0.0"となる。
          • mが10-3以上107未満の場合、これは、mの整数部(先行するゼロを付けない10進数の形式)、「.」('\u002E')、mの小数部を表す1桁以上の10進数、を順に並べたもので表現される。
          • mが10-3未満、あるいは107以上の場合は、浮動小数点表示形式で表現される。 nを、10nm < 10n+1を満たす一意の整数とし、aを、mと10nの数学的に正確な商(1≤a < 10)とする。 このとき、絶対値は、aの整数部を表す1桁の10進数、.('\u002E')、aの小数部を表す何桁かの10進数、文字E('\u0045')、nを10進整数として表現したもの(メソッドInteger.toString(int)で生成)、を順に並べたもので表現される。
        mまたはaの小数部として出力する桁数を検討してみましょう。 小数部を表す桁は1桁以上が必要です。double型の隣接する値から引数を一意に識別するのに最低限必要な桁数にしてください。 たとえば、ゼロでない有限の引数dを指定してこのメソッドで作成した10進値表記をxとします。 この場合、dxにもっとも近いdouble値でなければいけませんが、xまでの距離が同一のdouble値が2つ存在する場合は、dはそのどちらかであり、かつdの仮数の最下位ビットが0でなければいけません。

        浮動小数点値のローカライズされた文字列表現を作成する場合、NumberFormatのサブクラスを使用します。

        パラメータ:
        d - 変換するdouble
        戻り値:
        この引数の文字列表現。
      • toHexString

        public static String toHexString​(double d)
        double引数の16進数文字列表現を返します。 次の文字はすべてASCII文字です。
        • 引数がNaNの場合、変換後の文字列は「NaN」。
        • そうでない場合、変換後の文字列は引数の符号と絶対値を表す。 符号が負の場合、結果の文字列の最初の文字は「-」('\u002D')となり、符号が正の場合、結果の文字列に符号文字は表示されない。 絶対値mについては、次のとおり:
          • mが無限大の場合、これは文字列"Infinity"で表される。したがって、正の無限大の結果は"Infinity"、負の無限大の結果は"-Infinity"となる。
          • mがゼロの場合、これは文字列"0x0.0p0"で表される。したがって、負のゼロの結果は"-0x0.0p0"、正のゼロの結果は"0x0.0p0"となる。
          • mが正規化された表現のdouble値の場合は、有効数字と指数のフィールドを表すのに部分文字列が使われる。 有効数字は、文字列"0x1."と、小数部として残りの有効数字の小文字の16進表現を続けて表される。 すべての桁が0でないかぎり(すべてが0の場合は単一の0を使用)、16進表現の末尾の0は削除される。 次に、指数は、指数値でInteger.toStringを呼び出して生成するときのように、"p"とそれに続く完全な指数の10進数文字列で表される。
          • mが非正規表現のdouble値の場合、有効数字は、文字列"0x0."と、小数部として残りの有効数字の16進表現を続けて表される。 16進表現の末尾の0は削除されます。 次に、指数は"p-1022"で表される。 サブノーマル有効数字内に、ゼロでない数字が1つ以上存在する必要があることに留意してください。
        浮動小数点値16進数文字列
        1.0 0x1.0p0
        -1.0 -0x1.0p0
        2.0 0x1.0p1
        3.0 0x1.8p1
        0.5 0x1.0p-1
        0.25 0x1.0p-2
        Double.MAX_VALUE 0x1.fffffffffffffp1023
        Minimum Normal Value 0x1.0p-1022
        Maximum Subnormal Value 0x0.fffffffffffffp-1022
        Double.MIN_VALUE 0x0.0000000000001p-1022
        パラメータ:
        d - 変換するdouble
        戻り値:
        この引数の16進数の文字列表現。
        導入されたバージョン:
        1.5
      • valueOf

        public static Double valueOf​(String s)
                              throws NumberFormatException
        文字列引数sで表されるdouble値を保持するDoubleオブジェクトを返します。

        snullの場合、NullPointerExceptionがスローされます。

        s内の先頭と末尾の空白文字は無視されます。 空白文字は、String.trim()メソッドで削除されるときのように削除されます。つまり、ASCIIの空白文字と制御文字の両方が削除されます。 sの残りの文字が、次の字句構文ルールに従ってFloatValueを構成します。

        FloatValue:
        Signopt NaN
        Signopt Infinity
        Signopt FloatingPointLiteral
        Signopt HexFloatingPointLiteral
        SignedInteger
        HexFloatingPointLiteral:
        HexSignificand BinaryExponent FloatTypeSuffixopt
        HexSignificand:
        HexNumeral
        HexNumeral .
        0x HexDigitsopt. HexDigits
        0X HexDigitsopt. HexDigits
        BinaryExponent:
        BinaryExponentIndicator SignedInteger
        BinaryExponentIndicator:
        p
        P
        ここで、SignFloatingPointLiteralHexNumeralHexDigitsSignedInteger、およびFloatTypeSuffixは、『Java™言語仕様』の字句構造セクションで規定されているとおりですが、桁間のアンダースコアが受け入れられない点だけは規定と異なります。 sの形式がFloatValueでない場合は、NumberFormatExceptionがスローされます。 そうでない場合、sは通常の浮動小数点表記、つまり正確な10進値または16進値を表していると見なされます。この正確な数値は、概念上は無限に正確なバイナリ値に変換されてから、IEEE 754浮動小数点計算法による通常の最近似値丸め法(ゼロ値の符号保持を含む)に従ってdouble型に丸められます。 最近似値丸め法は、オーバーフローやアンダーフローの動作が発生することも意味します。sの正確な値の絶対値が十分大きい場合(MAX_VALUE + ulp(MAX_VALUE)/2以上の場合)、doubleに丸めると無限大になり、sの正確な値が十分小さい場合(MIN_VALUE/2以下の場合)、float に丸めるとゼロになることに注意してください。 最後に、丸めが完了したら、このdouble値を表すDoubleオブジェクトが返されます。

        浮動小数点値のローカライズされた文字列表現を解釈する場合、NumberFormatのサブクラスを使用します。

        末尾の形式指定子つまり浮動小数点リテラルの種類を決定する指定子(1.0ffloat値、1.0ddouble値)は、このメソッドの結果に与えません つまり、入力文字列の数値は、ターゲットの浮動小数点型に直接変換されます。 文字列をfloatに変換し、floatdoubleに変換する2段階のシーケンスは、文字列をdoubleに変換するのと等価ではありません たとえば、floatリテラル0.1fdouble0.10000000149011612と等価です。floatリテラル0.1fdoubleリテラル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 - 解析される文字列。
        戻り値:
        String引数により表される値を保持するDoubleオブジェクト。
        例外:
        NumberFormatException - 文字列が解析可能な数値を含まない場合。
      • valueOf

        public static Double valueOf​(double d)
        指定されたdouble値を表すDoubleインスタンスを返します。 新規Doubleインスタンスが不要な場合、通常このメソッドがコンストラクタDouble(double)に優先して使用されます。その理由は、このメソッドが頻繁に要求される値をキャッシュするので、操作に必要な領域や時間がはるかに少なくて済む場合が多いためです。
        パラメータ:
        d - double値。
        戻り値:
        dを表すDoubleインスタンス。
        導入されたバージョン:
        1.5
      • parseDouble

        public static double parseDouble​(String s)
                                  throws NumberFormatException
        DoubleクラスのvalueOfメソッドを実行した場合と同様に、指定されたStringが表す値に初期化された新しいdouble値を返します。
        パラメータ:
        s - 解析される文字列。
        戻り値:
        文字列引数で表されるdouble値。
        例外:
        NullPointerException - 文字列がnullの場合
        NumberFormatException - 文字列が解析可能なdoubleを含まない場合
        導入されたバージョン:
        1.2
        関連項目:
        valueOf(String)
      • isNaN

        public static boolean isNaN​(double v)
        指定された数値が非数(NaN)である場合にはtrueを、そうでない場合はfalseを返します。
        パラメータ:
        v - 判定される値。
        戻り値:
        引数の値がNaNである場合はtrue、そうでない場合はfalse
      • isInfinite

        public static boolean isInfinite​(double v)
        指定された数値の絶対値が無限量である場合にはtrueを、そうでない場合にはfalseを返します。
        パラメータ:
        v - 判定される値。
        戻り値:
        引数が正または負の無限値の場合はtrue、そうでない場合はfalse
      • isFinite

        public static boolean isFinite​(double d)
        引数が有限の浮動小数点値である場合はtrueを返し、そうでない場合(NaNおよび無限大の引数の場合)はfalseを返します。
        パラメータ:
        d - 判定されるdouble
        戻り値:
        その引数が有限の浮動小数点値である場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.8
      • isNaN

        public boolean isNaN()
        このDouble値が非数(NaN)である場合にはtrueを、そうでない場合はfalseを返します。
        戻り値:
        このオブジェクトが表す値がNaNである場合はtrue、そうでない場合はfalse
      • isInfinite

        public boolean isInfinite()
        このDouble値の絶対値が無限量である場合にはtrueを、そうでない場合にはfalseを返します。
        戻り値:
        このオブジェクトが表す値が正の無限大または負の無限大である場合はtrue、そうでない場合はfalse
      • toString

        public String toString()
        このDoubleオブジェクトの文字列表現を返します。 このオブジェクトが表すプリミティブdouble値は、1つの引数を取るtoStringメソッドを実行した場合と同じ文字列に変換されます。
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        このオブジェクトのString表現。
        関連項目:
        toString(double)
      • byteValue

        public byte byteValue()
        このDoubleの縮小プリミティブ変換後の値をbyteとして返します。
        オーバーライド:
        byteValue、クラス: Number
        戻り値:
        このオブジェクトが表すdouble値をbyte型に変換したもの
        導入されたバージョン:
        1.1
        Java™言語仕様:
        5.1.3 縮小プリミティブ変換
      • shortValue

        public short shortValue()
        このDoubleの縮小プリミティブ変換後の値をshortとして返します。
        オーバーライド:
        shortValue、クラス: Number
        戻り値:
        このオブジェクトが表すdouble値をshort型に変換したもの
        導入されたバージョン:
        1.1
        Java™言語仕様:
        5.1.3 縮小プリミティブ変換
      • intValue

        public int intValue()
        このDoubleの縮小プリミティブ変換後の値をintとして返します。
        定義:
        intValue、クラス: Number
        戻り値:
        このオブジェクトが表すdouble値をint型に変換したもの
        Java™言語仕様:
        5.1.3 縮小プリミティブ変換
      • longValue

        public long longValue()
        このDoubleの縮小プリミティブ変換後の値をlongとして返します。
        定義:
        longValue、クラス: Number
        戻り値:
        このオブジェクトが表すdouble値をlong型に変換したもの
        Java™言語仕様:
        5.1.3 縮小プリミティブ変換
      • floatValue

        public float floatValue()
        このDoubleの縮小プリミティブ変換後の値をfloatとして返します。
        定義:
        floatValue、クラス: Number
        戻り値:
        このオブジェクトが表すdouble値をfloat型に変換したもの
        導入されたバージョン:
        1.0
        Java™言語仕様:
        5.1.3 縮小プリミティブ変換
      • doubleValue

        public double doubleValue()
        このDoubleオブジェクトのdouble値を返します。
        定義:
        doubleValue、クラス: Number
        戻り値:
        このオブジェクトが表すdouble
      • hashCode

        public int hashCode()
        このDoubleオブジェクトのハッシュ・コードを返します。 計算された結果は、doubleToLongBits(double)メソッドの結果とまったく同じように、このDoubleオブジェクトが表すプリミティブdouble値のlong整数をビット表現した上位32ビットと下位32ビットの排他的論理和になります。 すなわち、ハッシュ・コードは次の式の値です。
        (int)(v^(v>>>32))
        ただし、vは次の式によって定義されます。
        long v = Double.doubleToLongBits(this.doubleValue());
        オーバーライド:
        hashCode 、クラス:  Object
        戻り値:
        このオブジェクトのハッシュ・コード値。
        関連項目:
        Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
      • hashCode

        public static int hashCode​(double value)
        Double.hashCode()との互換性がある、double値のハッシュ・コードを返します。
        パラメータ:
        value - ハッシュ対象の値
        戻り値:
        double値のハッシュ・コード値。
        導入されたバージョン:
        1.8
      • equals

        public boolean equals​(Object obj)
        このオブジェクトと指定されたオブジェクトを比較します。 結果がtrueになるのは、引数がnullでなく、このオブジェクトが表すdouble値と同じ値を保持するdoubleを表すDoubleオブジェクトである場合だけです。 このため、2つのdouble値が等しいと見なされるのは、doubleToLongBits(double)メソッドを各値に適用したときに同一のlong値が返される場合だけです。

        ほとんどの場合、クラスDoubleの2つのインスタンスd1d2について、d1.equals(d2)の値がtrueになるのは、

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

        上記の値もtrueになる場合だけです。 しかし、例外事項も2つあります。

        • d1d2がどちらもDouble.NaNを表している場合、Double.NaN==Double.NaNの値がfalseになるにもかかわらず、equalsメソッドからはtrueが返されます。
        • d1+0.0を表し、d2-0.0を表している場合、あるいはその逆の場合、+0.0==-0.0の値がtrueになるにもかかわらず、equalテストの値はfalseになります。
        この定義によって、ハッシュ表は正しく動作します。

        オーバーライド:
        equals 、クラス:  Object
        パラメータ:
        obj - 比較対象のオブジェクト。
        戻り値:
        オブジェクトが同じである場合はtrue、そうでない場合はfalse
        関連項目:
        doubleToLongBits(double)
      • doubleToLongBits

        public static long doubleToLongBits​(double value)
        IEEE 754浮動小数点の「ダブル・フォーマット(double format)」ビット・レイアウトに従って、指定された浮動小数点の値を表現して返します。

        ビット63 (マスク0x8000000000000000Lによって選択されるビット)は、浮動小数点の符号を表します。 ビット62-52 (マスク0x7ff0000000000000Lによって選択されるビット)は、指数を表します。 ビット51-0 (マスク0x000fffffffffffffLによって選択されるビット)は、浮動小数点の有効値(仮数と呼ばれる場合もある)を表します。

        引数が正の無限大の場合、結果は0x7ff0000000000000Lになります。

        引数が負の無限大の場合、結果は0xfff0000000000000Lになります。

        引数がNaNの場合、結果は0x7ff8000000000000Lになります。

        どの場合も、返される値はlong整数であり、longBitsToDouble(long)メソッドを指定すると、doubleToLongBitsへの引数と同じ浮動小数点値になります(すべてのNaN値が単一の正規NaN値に収納されることを除く)。

        パラメータ:
        value - double精度の浮動小数点値。
        戻り値:
        浮動小数点値を表すビット。
      • doubleToRawLongBits

        public static long doubleToRawLongBits​(double value)
        IEEE 754浮動小数点の「ダブル・フォーマット(double format)」ビット・レイアウトに従って、非数(NaN)値を保持する、指定された浮動小数点値の表現を返します。

        ビット63 (マスク0x8000000000000000Lによって選択されるビット)は、浮動小数点の符号を表します。 ビット62-52 (マスク0x7ff0000000000000Lによって選択されるビット)は、指数を表します。 ビット51-0 (マスク0x000fffffffffffffLによって選択されるビット)は、浮動小数点の有効値(仮数と呼ばれる場合もある)を表します。

        引数が正の無限大の場合、結果は0x7ff0000000000000Lになります。

        引数が負の無限大の場合、結果は0xfff0000000000000Lになります。

        引数がNaNの場合、返される値は実際のNaN値を示すlong整数です。 doubleToLongBitsメソッドとは異なり、doubleToRawLongBitsメソッドが、すべてのビット・パターン符号化NaNを単一の「正規」NaN値に収納することはありません。

        どの場合も、返される値はlong整数であり、longBitsToDouble(long)メソッドを指定すると、doubleToRawLongBitsへの引数と同じ浮動小数点値になります。

        パラメータ:
        value - double精度の浮動小数点値。
        戻り値:
        浮動小数点値を表すビット。
        導入されたバージョン:
        1.3
      • longBitsToDouble

        public static double longBitsToDouble​(long bits)
        指定されたビット表現と対応するdouble値を返します。 引数は、IEEE 754浮動小数点「倍精度」ビット配列に従った浮動小数点表現と見なされます。

        引数が0x7ff0000000000000Lの場合、結果は正の無限大値になります。

        引数が0xfff0000000000000Lの場合、結果は負の無限大値になります。

        引数が0x7ff0000000000001Lから0x7fffffffffffffffL、または0xfff0000000000001Lから0xffffffffffffffffLの範囲内の値である場合、結果はNaNになります。 Javaにより提供されるIEEE 754浮動小数点操作は、異なるビット・パターンを持つ同じ型の2つのNaN値を識別できません。 個別のNaN値を識別できるのは、Double.doubleToRawLongBitsメソッドを使用する場合だけです。

        そのほかの場合では、se、およびmの3つの値について次の引数から計算できるとします。

        
         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引数とまったく同じビット・パターンを持つdouble NaNを返すことができない可能性があります。 IEEE 754では、2種類のNaN (「シグナルを発生しないNaN」と「シグナルを発生するNaN」)を区別します。 2種類のNaNの違いは、通常Javaでは確認できません。 シグナルを発生するNaNでの算術演算では、シグナルを発生するNaNが、異種でありながら同様のビット・パターンを持つシグナルを発生しないNaNに変わります。 ただし、シグナルを発生するNaNを単にコピーする一部のプロセッサも、この変換も行います。 特に、シグナルを発生するNaNをコピーして、呼出し側のメソッドに返すことで、この変換を実行できます。 したがって、longBitsToDoubleは、シグナルを発生するNaNビット・パターンを持つdoubleを返すことができない可能性があります。 したがって、一部のlong値では、doubleToRawLongBits(longBitsToDouble(start))startと等しくならないことがあります。 加えて、どの特定のビット・パターンがシグナルを発生するNaNを表すかは、プラットフォームによって異なります。シグナルを発生しないかシグナルを発生するかにかかわらず、すべてのNaNビット・パターンは上に示すNaNの範囲になければいけません。

        パラメータ:
        bits - 任意のlong整数。
        戻り値:
        同じビット・パターンを持つdouble浮動小数点値。
      • compareTo

        public int compareTo​(Double anotherDouble)
        2つのDoubleオブジェクトを数値的に比較します。 このメソッドによる比較は、Java言語の数値比較演算子(<,<=,==,>=,>)をプリミティブdouble値に適用した場合とは、次の2点で異なります。
        • このメソッドでは、Double.NaNは自身に等しく、ほかのすべてのdouble値(Double.POSITIVE_INFINITYを含む)よりも大きいとみなされる。
        • このメソッドでは、0.0d-0.0dより大きいとみなされる。
        こうして、メソッドにより適用されるDoubleオブジェクトの自然順序付けで、equalsとの一貫性が確保されます。
        定義:
        compareTo、インタフェース: Comparable<Double>
        パラメータ:
        anotherDouble - 比較対象のDouble
        戻り値:
        anotherDoubleがこのDoubleと同じ数値の場合は値0DoubleanotherDoubleより小さい数値の場合は0より小さい値。DoubleanotherDoubleより大きい数値の場合は0より大きい値。
        導入されたバージョン:
        1.2
      • compare

        public static int compare​(double d1,
                                  double d2)
        指定された2つのdouble値を比較します。 返される整数値の符号は、次の呼出しで返される整数の符号と同じになります。
            new Double(d1).compareTo(new Double(d2))
         
        パラメータ:
        d1 - 比較する最初のdouble
        d2 - 比較する2番目のdouble
        戻り値:
        d1がこのd2と同じ数値の場合は値0d1d2より小さい数値の場合は0より小さい値。d1d2より大きい数値の場合は0より大きい値。
        導入されたバージョン:
        1.4
      • sum

        public static double sum​(double a,
                                 double b)
        +演算子のように、2つのdouble値を加算します。
        パラメータ:
        a - 第1オペランド
        b - 第2オペランド
        戻り値:
        abの合計
        導入されたバージョン:
        1.8
        関連項目:
        BinaryOperator
        Java™言語仕様:
        4.2.4 浮動小数点操作
      • max

        public static double max​(double a,
                                 double b)
        Math.maxを呼び出した場合と同様に、2つのdouble値の大きいほうを返します。
        パラメータ:
        a - 第1オペランド
        b - 第2オペランド
        戻り値:
        abのどちらか大きい方
        導入されたバージョン:
        1.8
        関連項目:
        BinaryOperator
      • min

        public static double min​(double a,
                                 double b)
        Math.minを呼び出した場合と同様に、2つのdouble値の小さいほうを返します。
        パラメータ:
        a - 第1オペランド
        b - 第2オペランド
        戻り値:
        abのどちらか小さい方。
        導入されたバージョン:
        1.8
        関連項目:
        BinaryOperator
      • resolveConstantDesc

        public Double resolveConstantDesc​(MethodHandles.Lookup lookup)
        このインスタンスをConstantDescとして解決します。その結果がインスタンス自体です。
        定義:
        インタフェースConstantDesc内のresolveConstantDesc
        パラメータ:
        lookup - ignored
        戻り値:
        Doubleインスタンス
        導入されたバージョン:
        12