モジュール 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の処理時に役立つ定数およびメソッドも提供します。

これはvalue-basedクラスです。プログラマは、equalのインスタンスを交換可能として扱い、同期にインスタンスを使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。

浮動小数点等価、等価および比較

IEEE 754の浮動小数点値には、0以外の値、符号付きゼロ (+0.0および-0.0)、符号付き無限大「プラスの無限大」および「マイナス無限大」)、およびNaN (not-a-number)が含まれます。

値セットに対する「等価関係」は、再帰的、対称的および推移的の値のペアに対するブール関係です。 等価関係とオブジェクト等価の詳細は、Object.equals仕様を参照してください。 等価関係は、操作する値を「同等クラス」というセットにパーティション化します。 等価クラスのすべてのメンバーは、関係の下で相互に等しくなります。 等価クラスには、1つのメンバーのみを含めることができます。 一部の目的では、同等クラスのすべてのメンバーが互いに置換可能です。 特に、数値の式の等価値は、式の結果を変更することなく、互いに「置き換え」にすることができます。つまり、式の結果の等価クラスを変更します。

浮動小数点値に対する組込みの==操作は、等価関係ではありません。 等価関係を定義していないにもかかわらず、IEEE 754 ==演算子のセマンティクスは、他の数値計算ニーズを満たすように意図的に設計されました。 浮動小数点値に対して ==で等価関係のプロパティが満たされないという2つの例外があります:

  • v1v2の両方がNaNの場合、v1 == v2の値はfalseです。 したがって、2つのNaN引数では、等価関係のreflexiveプロパティは==演算子によって満たされません。
  • v1+0.0を表し、v2-0.0、またはその逆の場合は、+0.0-0.0が様々な浮動小数点演算で区別される場合でも、v1 == v2の値はtrueになります。 たとえば、1.0/+0.0は正の無限大と評価され、1.0/-0.0negativeの無限大と正の無限大に評価され、負の無限大は互いに等しくありません。 したがって、符号付きゼロ入力は、通常、ゼロ結果の符号を決定します。これは、ゼロで除算すると、+0.0-0.0が一般的には相互に置換されないためです。 0(ゼロ)入力の符号は、数学ライブラリのメソッドの結果に置換えられない効果もあります。

組込みの比較演算子(<, <=, etc.)を使用した順序比較の場合、NaNの値には別の異常な状況があります: NaNは、それ自体を含め、それより小さくも、それ以上でも、どの値でもありません。 これは、「比較の抜本的な」が保持されないことを意味します。

equalsおよびcompareToメソッドに適切なセマンティクスを提供するために、これらのメソッドは、単に==または順序付けされた比較操作を囲むことはできません。 代わりに、equalsはNaN引数を相互に等価に定義し、+0.0 -0.0と等しくないように定義し、再フレックス性をリストアします。 比較のために、compareToは、 -0.0+0.0未満で、NaNがそれ自体と同じであり、正の無限大とみなされる合計順序を定義します。

equalsおよび compareToの動作セマンティクスは、「ビット単位変換」によって整数値への浮動小数点値で表されます。

compareToによって実装される「自然順序付け」は、「等しい」です。 つまり、2つのオブジェクトがequalsと等しいとレポートされるのは、それらのオブジェクトのcompareToが0を返す場合のみです。

equalsおよび compareToに定義された調整済動作により、ラッパー・クラスのインスタンスは従来のデータ構造で適切に動作できます。 たとえば、NaNの値をequalsとして定義すると、NaNをHashSetの要素またはHashMapのキーとして使用できます。 同様に、 compareTo+0.0 -0.0、NaNなどの合計順序として定義すると、ラッパー・クラスのインスタンスをSortedSetの要素またはSortedMapのキーとして使用できます。

Java言語仕様を参照してください:
「4.2.3 浮動小数点型、形式および値」
「4.2.4.浮動小数点演算」
「15.21.1 数値等価演算子==と!=」
「15.20.1 数値比較演算子<<=>および>=
導入されたバージョン:
1.0
関連項目:
  • フィールドのサマリー

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

    コンストラクタ
    コンストラクタ
    説明
    Double(double value)
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    このコンストラクタを使用することはほとんどありません。
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    このコンストラクタを使用することはほとんどありません。
  • メソッドのサマリー

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

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • 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)とも同等です。
      関連項目:
    • SIZE

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

      public static final int PRECISION
      double値の仮数のビット数。 これは、「Java言語仕様」のセクション4.2.3のパラメータNです。
      導入されたバージョン:
      19
      関連項目:
    • 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
      関連項目:
    • BYTES

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

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

    • Double

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

      @Deprecated(since="9", forRemoval=true) public Double(String s) throws NumberFormatException
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      このコンストラクタを使用することはほとんどありません。 文字列を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は正で有限です。 次の2つの段階で文字列に変換されます:
          • 小数点以下の選択: mを表すために、適切に定義された小数点dmが選択されています。 この小数点は、IEEE 754浮動小数点演算の最も近い端数処理ポリシーに従ってmに四捨五入される(ほとんど)です。
          • 文字列としての書式設定: 10進数のdmは、値に応じてプレーンまたはコンピュータ化された科学表記で文字列として書式設定されます。

      「小数」は、sが10の倍数でないように、一部の(一意)整数s > 0およびiに対するs×10iという形式の数です。 これらの整数は、それぞれ小数の「仮数」および「指数」です。 小数点のlengthは、10n-1s < 10nに一致する(一意)正の整数nです。

      有限正のmの小数dmは次のように定義されます:

      • IEEE 754浮動小数点演算の通常の「四捨五入」丸めポリシーに従って、Rmに丸めるすべての小数点のセットにします。
      • pは、Rのすべての小数点以下の最小長にします。
      • p≥2の場合、Tを長さpR内のすべての小数点のセットにします。 それ以外の場合は、Tを長さ1または2のR内のすべての小数点のセットにします。
      • dmを、mに最も近いTの小数として定義します。 または、Tにこのような小数が2つある場合は、偶数の仮数を持つ小数を選択します。

      選択した(独自)の小数点dmが書式設定されます。 siおよびnをそれぞれdmの仮数、指数および長さとします。 さらに、e = n + iとします - s1snsの通常の10進展開にします。 s1≠0およびsn≠0に注意してください。 下の小数点'.''\u002E'で、指数インジケータ'E''\u0045'です。

      • ケース -3 ≤ e < 0: dmは、0.00としてフォーマットされますs1sn。小数点とs1の間に正確に -(n + i)ゼロがあります。 たとえば、123×10-40.0123とフォーマットされます。
      • ケース0 ≤ e < 7:
        • サブケースi ≥0: dmは、s1snとしてフォーマットされます00.0snと小数点の間に正確にiゼロがあります。 たとえば、123×10212300.0とフォーマットされます。
        • サブケースi < 0: dmは、s1…としてフォーマットされますsn+i.sn+i+1sn、ここで小数点の右に正確に-i桁あります。 たとえば、123×10-112.3とフォーマットされます。
      • ケースe < -3またはe ≥7: コンピュータ化された科学表記法を使用して、dmをフォーマットします。 ここで、eInteger.toString(int)によってフォーマットされます。
        • サブケースn = 1: dmは、s1 .0Eeとしてフォーマットされます。 たとえば、1×10231.0E23とフォーマットされます。
        • サブケースn > 1: dmは、s1. s2としてフォーマットされますsnEe たとえば、123×10-211.23E-19とフォーマットされます。

      浮動小数点値のローカライズされた文字列表現を作成する場合、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
      関連項目:
    • isNaN

      public static boolean isNaN(double v)
      指定された数値が非数(NaN)である場合にはtrueを、そうでない場合はfalseを返します。
      APIのノート:
      このメソッドは、IEEE 754で定義されているisNaN演算に対応します。
      パラメータ:
      v - 判定される値。
      戻り値:
      引数の値がNaNである場合はtrue、そうでない場合はfalse
    • isInfinite

      public static boolean isInfinite(double v)
      指定された数値の絶対値が無限量である場合にはtrueを、そうでない場合にはfalseを返します。
      APIのノート:
      このメソッドは、IEEE 754で定義されているisInfinite演算に対応します。
      パラメータ:
      v - 判定される値。
      戻り値:
      引数が正または負の無限値の場合はtrue、そうでない場合はfalse
    • isFinite

      public static boolean isFinite(double d)
      引数が有限の浮動小数点値である場合はtrueを返し、そうでない場合(NaNおよび無限大の引数の場合)はfalseを返します。
      APIのノート:
      このメソッドは、IEEE 754で定義されているisFinite演算に対応します。
      パラメータ:
      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表現。
      関連項目:
    • byteValue

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

      public short shortValue()
      このDoubleの縮小プリミティブ変換後の値をshortとして返します。
      オーバーライド:
      shortValue、クラスNumber
      戻り値:
      このオブジェクトが表すdouble値をshort型に変換したもの
      Java言語仕様を参照してください:
      5.1.3 プリミティブ・コンバージョンの解説
      導入されたバージョン:
      1.1
    • 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
      APIのノート:
      このメソッドは、IEEE 754で定義されているconvertFormat演算に対応します。
      戻り値:
      このオブジェクトが表すdouble値をfloat型に変換したもの
      Java言語仕様を参照してください:
      5.1.3 プリミティブ・コンバージョンの解説
      導入されたバージョン:
      1.0
    • 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
      戻り値:
      このオブジェクトのハッシュ・コード値。
      関連項目:
    • 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値が返される場合だけです。
      オーバーライド:
      equals、クラスObject
      APIのノート:
      このメソッドは、==演算子が等価関係を定義せず、「等しい契約」を満たすために等価関係を実装する必要があるため、double値の==演算子ではなくdoubleToLongBits(double)という観点で定義されます。浮動小数点の等価性と等価性の詳細は、「このディスカッション」を参照してください。
      パラメータ:
      obj - 比較対象の参照オブジェクト。
      戻り値:
      このオブジェクトがobj引数と同じである場合はtrue、それ以外の場合はfalse
      Java言語仕様を参照してください:
      「15.21.1 数値等価演算子==と!=」
      関連項目:
    • 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オブジェクトを数値的に比較します。 このメソッドでは、double値のJava言語数値比較演算子(<, <=, ==, >=, >)で定義された不完全な順序と比較して、2つの差異があるDoubleオブジェクトに合計順序が適用されます。
      • NaNは、他の値に関して「順序なし」で、比較演算子ではそれ自体に対して不等です。 このメソッドは、 Double.NaNをそれ自体に等しく、他のすべてのdouble値( Double.POSITIVE_INFINITYを含む)より大きく定義することを選択します。
      • 正のゼロと負のゼロは、数値で比較されますが、区別できる値は明確です。 このメソッドでは、正のゼロ((+0.0d))を負のゼロ((-0.0d))より大きい値として定義します。
      これにより、このメソッドによって課されるDoubleオブジェクトの「自然順序付け」「等しい」であることが保証されます。浮動小数点比較および順序付けの詳細は、「このディスカッション」を参照してください。
      定義:
      compareTo、インタフェースComparable<Double>
      パラメータ:
      anotherDouble - 比較対象のDouble
      戻り値:
      anotherDoubleがこのDoubleと同じ数値の場合は値0DoubleanotherDoubleより小さい数値の場合は0より小さい値。DoubleanotherDoubleより大きい数値の場合は0より大きい値。
      Java言語仕様を参照してください:
      「15.20.1 数値比較演算子<<=>および>=
      導入されたバージョン:
      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値を加算します。
      APIのノート:
      このメソッドは、IEEE 754で定義されている追加演算に対応します。
      パラメータ:
      a - 第1オペランド
      b - 第2オペランド
      戻り値:
      abの合計
      Java言語仕様を参照してください:
      4.2.4 浮動小数点操作
      導入されたバージョン:
      1.8
      関連項目:
    • max

      public static double max(double a, double b)
      Math.maxを呼び出した場合と同様に、2つのdouble値の大きいほうを返します。
      APIのノート:
      このメソッドは、IEEE 754で定義されている最大演算数に対応します。
      パラメータ:
      a - 第1オペランド
      b - 第2オペランド
      戻り値:
      abのどちらか大きい方
      導入されたバージョン:
      1.8
      関連項目:
    • min

      public static double min(double a, double b)
      Math.minを呼び出した場合と同様に、2つのdouble値の小さいほうを返します。
      APIのノート:
      このメソッドは、IEEE 754で定義されている最小動作に対応します。
      パラメータ:
      a - 第1オペランド
      b - 第2オペランド
      戻り値:
      abのどちらか小さい方。
      導入されたバージョン:
      1.8
      関連項目:
    • describeConstable

      public Optional<Double> describeConstable()
      このインスタンス自体の名目記述子を含むOptionalを返します。
      定義:
      インタフェースConstable内のdescribeConstable
      戻り値:
      Doubleインスタンスを説明するOptional
      導入されたバージョン:
      12
    • resolveConstantDesc

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