- すべての実装されたインタフェース:
Serializable
,Comparable<Double>
,Constable
,ConstantDesc
Double
クラスは、プリミティブ型double
の値をオブジェクトにラップします。 Double
型のオブジェクトには、型がdouble
の単一フィールドが含まれます。
さらにこのクラスは、double
をString
に、String
をdouble
に変換する各種メソッドや、double
の処理時に役立つ定数およびメソッドも提供します。
これはvalue-basedクラスです。プログラマは、equalのインスタンスを交換可能として扱い、同期にインスタンスを使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。
浮動小数点等価、等価および比較
IEEE 754の浮動小数点値には、0以外の値、符号付きゼロ (+0.0
および-0.0
)、符号付き無限大「プラスの無限大」および「マイナス無限大」)、およびNaN (not-a-number)が含まれます。
値セットに対する「等価関係」は、再帰的、対称的および推移的の値のペアに対するブール関係です。 等価関係とオブジェクト等価の詳細は、Object.equals
仕様を参照してください。 等価関係は、操作する値を「同等クラス」というセットにパーティション化します。 等価クラスのすべてのメンバーは、関係の下で相互に等しくなります。 等価クラスには、1つのメンバーのみを含めることができます。 一部の目的では、同等クラスのすべてのメンバーが互いに置換可能です。 特に、数値の式の等価値は、式の結果を変更することなく、互いに「置き換え」にすることができます。つまり、式の結果の等価クラスを変更します。
浮動小数点値に対する組込みの==
操作は、等価関係ではありません。 等価関係を定義していないにもかかわらず、IEEE 754 ==
演算子のセマンティクスは、他の数値計算ニーズを満たすように意図的に設計されました。 浮動小数点値に対して ==
で等価関係のプロパティが満たされないという2つの例外があります:
v1
とv2
の両方が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.0
はnegativeの無限大と正の無限大に評価され、負の無限大は互いに等しくありません。 したがって、符号付きゼロ入力は、通常、ゼロ結果の符号を決定します。これは、ゼロで除算すると、+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
値を表すのに使われるビット数です。プリミティブ型double
を表すClass
インスタンス。 -
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明byte
このDouble
の縮小プリミティブ変換後の値をbyte
として返します。static int
compare
(double d1, double d2) 指定された2つのdouble
値を比較します。int
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
hashCode()
このDouble
オブジェクトのハッシュ・コードを返します。static int
hashCode
(double value) Double.hashCode()
との互換性がある、double
値のハッシュ・コードを返します。int
intValue()
このDouble
の縮小プリミティブ変換後の値をint
として返します。static boolean
isFinite
(double d) 引数が有限の浮動小数点値である場合はtrue
を返し、そうでない場合(NaNおよび無限大の引数の場合)はfalse
を返します。boolean
この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
この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進数文字列表現を返します。toString()
このDouble
オブジェクトの文字列表現を返します。static String
toString
(double d) double
引数の文字列表現を返します。static Double
valueOf
(double d) 指定されたdouble
値を表すDouble
インスタンスを返します。static Double
文字列引数s
で表されるdouble
値を保持するDouble
オブジェクトを返します。
-
フィールド詳細
-
POSITIVE_INFINITY
public static final double POSITIVE_INFINITYdouble
型の正の無限大値を保持する定数です。 これは、Double.longBitsToDouble(0x7ff0000000000000L)
から返される値と等しくなります。- 関連項目:
-
NEGATIVE_INFINITY
public static final double NEGATIVE_INFINITYdouble
型の負の無限大値を保持する定数です。 これは、Double.longBitsToDouble(0xfff0000000000000L)
から返される値と等しくなります。- 関連項目:
-
NaN
public static final double NaNdouble
型の非数(NaN)値を保持する定数です。 これは、Double.longBitsToDouble(0x7ff8000000000000L)
から返される値と等しくなります。- 関連項目:
-
MAX_VALUE
public static final double MAX_VALUEdouble
型の正の最大有限値(2-2-52)·21023です。 16進数浮動小数点リテラル0x1.fffffffffffffP+1023
と同等であり、Double.longBitsToDouble(0x7fefffffffffffffL)
とも同等です。- 関連項目:
-
MIN_NORMAL
public static final double MIN_NORMALdouble
型の正の最小標準値2-1022を保持する定数です。 16進数浮動小数点リテラル0x1.0p-1022
と同等であり、Double.longBitsToDouble(0x0010000000000000L)
とも同等です。- 導入されたバージョン:
- 1.6
- 関連項目:
-
MIN_VALUE
public static final double MIN_VALUEdouble
型の正の最小非ゼロ値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 SIZEdouble
値を表すのに使われるビット数です。- 導入されたバージョン:
- 1.5
- 関連項目:
-
BYTES
public static final int BYTESdouble
値を表すために使用されるバイト数です。- 導入されたバージョン:
- 1.8
- 関連項目:
-
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が10-3以上107未満の場合、これは、mの整数部(先行するゼロを付けない10進数の形式)、「
.
」('\u002E'
)、mの小数部を表す1桁以上の10進数、を順に並べたもので表現される。 - mが10-3未満、あるいは107以上の場合は、浮動小数点表示形式で表現される。 nを、10n≤m < 10n+1を満たす一意の整数とし、aを、mと10nの数学的に正確な商(1≤a < 10)とする。 このとき、絶対値は、aの整数部を表す1桁の10進数、「
.
」('\u002E'
)、aの小数部を表す何桁かの10進数、文字「E
」('\u0045'
)、nを10進整数として表現したもの(メソッドInteger.toString(int)
で生成)、を順に並べたもので表現される。
- mが無限大の場合、これは文字列
double
型の隣接する値から引数を一意に識別するのに最低限必要な桁数にしてください。 たとえば、ゼロでない有限の引数dを指定してこのメソッドで作成した10進値表記をxとします。 この場合、dはxにもっとも近いdouble
値でなければいけませんが、xまでの距離が同一のdouble
値が2つ存在する場合は、dはそのどちらかであり、かつdの仮数の最下位ビットが0
でなければいけません。浮動小数点値のローカライズされた文字列表現を作成する場合、
NumberFormat
のサブクラスを使用します。- パラメータ:
d
- 変換するdouble
。- 戻り値:
- この引数の文字列表現。
- 引数がNaNの場合、変換後の文字列は「
-
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つ以上存在する必要があることに留意してください。
- mが無限大の場合、これは文字列
例 浮動小数点値 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
- 引数がNaNの場合、変換後の文字列は「
-
valueOf
public static Double valueOf(String s) throws NumberFormatException 文字列引数s
で表されるdouble
値を保持するDouble
オブジェクトを返します。s
がnull
の場合、NullPointerException
がスローされます。s
内の先頭と末尾の空白文字は無視されます。 空白文字は、String.trim()
メソッドで削除されるときのように削除されます。つまり、ASCIIの空白文字と制御文字の両方が削除されます。s
の残りの文字が、次の字句構文ルールに従ってFloatValueを構成します。- FloatValue:
- Signopt
NaN
- Signopt
Infinity
- Signopt FloatingPointLiteral
- Signopt HexFloatingPointLiteral
- SignedInteger
- Signopt
- HexFloatingPointLiteral:
- HexSignificand BinaryExponent FloatTypeSuffixopt
- HexSignificand:
- HexNumeral
- HexNumeral
.
0x
HexDigitsopt.
HexDigits0X
HexDigitsopt.
HexDigits - HexNumeral
- BinaryExponent:
- BinaryExponentIndicator SignedInteger
- BinaryExponentIndicator:
p
P
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.0f
はfloat
値、1.0d
はdouble
値)は、このメソッドの結果に与えません。 つまり、入力文字列の数値は、ターゲットの浮動小数点型に直接変換されます。 文字列をfloat
に変換し、float
をdouble
に変換する2ステップのシーケンスは、文字列をdouble
に変換するのと等価ではありません。 たとえば、float
リテラル0.1f
はdouble
値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
- 解析される文字列。- 戻り値:
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
を返します。- パラメータ:
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
メソッドを実行した場合と同じ文字列に変換されます。 -
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
- 戻り値:
- このオブジェクトが表す
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
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
メソッドを使用する場合だけです。そのほかの場合では、s、e、およびmの3つの値について次の引数から計算できるとします。
この場合、浮動小数点値の結果は、数式s·m·2e-1075の値と等しくなります。int s = ((bits >> 63) == 0) ? 1 : -1; int e = (int)((bits >> 52) & 0x7ffL); long m = (e == 0) ? (bits & 0xfffffffffffffL) << 1 : (bits & 0xfffffffffffffL) | 0x10000000000000L;
このメソッドは、
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
と同じ数値の場合は値0
。Double
がanotherDouble
より小さい数値の場合は0
より小さい値。Double
がanotherDouble
より大きい数値の場合は0
より大きい値。- Java言語仕様を参照してください:
-
「15.20.1 数値比較演算子
<
、<=
、>
および>=
」 - 導入されたバージョン:
- 1.2
- NaNは、他の値に関して「順序なし」で、比較演算子ではそれ自体に対して不等です。 このメソッドは、
-
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
と同じ数値の場合は値0
。d1
がd2
より小さい数値の場合は0
より小さい値。d1
がd2
より大きい数値の場合は0
より大きい値。- 導入されたバージョン:
- 1.4
-
sum
public static double sum(double a, double b) +演算子のように、2つのdouble
値を加算します。- パラメータ:
a
- 第1オペランドb
- 第2オペランド- 戻り値:
a
とb
の合計- Java言語仕様を参照してください:
-
4.2.4 浮動小数点操作
- 導入されたバージョン:
- 1.8
- 関連項目:
-
max
public static double max(double a, double b) Math.max
を呼び出した場合と同様に、2つのdouble
値の大きいほうを返します。- パラメータ:
a
- 第1オペランドb
- 第2オペランド- 戻り値:
a
とb
のどちらか大きい方- 導入されたバージョン:
- 1.8
- 関連項目:
-
min
public static double min(double a, double b) Math.min
を呼び出した場合と同様に、2つのdouble
値の小さいほうを返します。- パラメータ:
a
- 第1オペランドb
- 第2オペランド- 戻り値:
a
とb
のどちらか小さい方。- 導入されたバージョン:
- 1.8
- 関連項目:
-
describeConstable
このインスタンス自体の名目記述子を含むOptional
を返します。- 定義:
- インタフェース
Constable
内のdescribeConstable
- 戻り値:
- Doubleインスタンスを説明する
Optional
- 導入されたバージョン:
- 12
-
resolveConstantDesc
public Double resolveConstantDesc(MethodHandles.Lookup lookup) このインスタンスをConstantDesc
として解決します。その結果がインスタンス自体です。- 定義:
- インタフェース
ConstantDesc
内のresolveConstantDesc
- パラメータ:
lookup
- ignored- 戻り値:
- Doubleインスタンス
- 導入されたバージョン:
- 12
-