public final class Double extends Number implements Comparable<Double>
Double クラスは、プリミティブ型 double の値をオブジェクトにラップします。Double 型のオブジェクトには、型が double の単一フィールドが含まれます。
さらにこのクラスは、double を String に、String を double に変換する各種メソッドや、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 引数を表す、新しく割り当てられた Double オブジェクトを構築します。 |
Double(String s)
文字列で表される
double 型の浮動小数点を表す、新しく割り当てられる Double オブジェクトを構築します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
byte |
byteValue()
この
Double の値を、byte としてキャストすることによって、byte として返します。 |
static int |
compare(double d1, double d2)
指定された 2 つの
double 値を比較します。 |
int |
compareTo(Double anotherDouble)
2 つの
Double オブジェクトを数値的に比較します。 |
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 オブジェクトのハッシュコードを返します。 |
int |
intValue()
この
Double の値を、型 int にキャストすることによって、int として返します。 |
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 にキャストすることによって、long として返します。 |
static double |
parseDouble(String s)
Double クラスの valueOf メソッドを実行した場合と同様に、指定された String が表す値に初期化された新しい double 値を返します。 |
short |
shortValue()
この
Double の値を、short としてキャストすることによって、short として返します。 |
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 オブジェクトを返します。 |
public static final double POSITIVE_INFINITY
double 型の正の無限大値を保持する定数です。これは、Double.longBitsToDouble(0x7ff0000000000000L) から返される値と等しくなります。public static final double NEGATIVE_INFINITY
double 型の負の無限大値を保持する定数です。これは、Double.longBitsToDouble(0xfff0000000000000L) から返される値と等しくなります。public static final double NaN
double 型の非数 (NaN) 値を保持する定数です。これは、Double.longBitsToDouble(0x7ff8000000000000L) から返される値と等しくなります。public static final double MAX_VALUE
double 型の正の最大有限値 (2-2-52)·21023 です。16 進数浮動小数点リテラル 0x1.fffffffffffffP+1023 と同等であり、Double.longBitsToDouble(0x7fefffffffffffffL) とも同等です。public static final double MIN_NORMAL
double 型の正の最小標準値 2-1022 を保持する定数です。16 進数浮動小数点リテラル 0x1.0p-1022 と同等であり、Double.longBitsToDouble(0x0010000000000000L) とも同等です。public static final double MIN_VALUE
double 型の正の最小非ゼロ値 2-1074 を保持する定数です。16 進数浮動小数点リテラル 0x0.0000000000001P-1022 と同等であり、Double.longBitsToDouble(0x1L) とも同等です。public static final int MAX_EXPONENT
double 変数が持つ可能性のある最大指数です。これは、Math.getExponent(Double.MAX_VALUE) から返される値と等しくなります。public static final int MIN_EXPONENT
double 変数が持つ可能性のある最小指数です。これは、Math.getExponent(Double.MIN_NORMAL) から返される値と等しくなります。public static final int SIZE
double 値を表すのに使われるビット数です。public Double(double value)
double 引数を表す、新しく割り当てられた Double オブジェクトを構築します。value - Double によって表される値。public Double(String s) throws NumberFormatException
double 型の浮動小数点を表す、新しく割り当てられる Double オブジェクトを構築します。文字列は、valueOf メソッドと同様に double 値に変換されます。s - Double に変換する文字列。NumberFormatException - 文字列が解析可能な数値を含まない場合。valueOf(java.lang.String)public static String toString(double d)
double 引数の文字列表現を返します。次の文字はすべて ASCII 文字です。
NaN」。
-」('\u002D')。符号が正の場合、変換後の文字列に符号文字は表示されない。絶対値 m については、次のとおり:
"Infinity" で表される。したがって、正の無限大の結果は "Infinity"、負の無限大の結果は "-Infinity" となる。
"0.0" で表される。したがって、負のゼロの結果は "-0.0"、正のゼロの結果は "0.0" となる。
.」('\u002E')、m の小数部を表す 1 桁以上の 10 進数、を順に並べたもので表現される。
.」('\u002E')、a の小数部を表す何桁かの 10 進数、文字「E」('\u0045')、n を 10 進整数として表現したもの (メソッド Integer.toString(int) で生成)、を順に並べたもので表現される。
double 型の隣接する値から引数を一意に識別するのに最低限必要な桁数にしてください。たとえば、ゼロでない有限の引数 d を指定してこのメソッドで作成した 10 進値表記を x とします。この場合、d は x にもっとも近い double 値でなければいけませんが、x までの距離が同一の double 値が 2 つ存在する場合は、d はそのどちらかであり、かつ d の仮数の最下位ビットが 0 でなければいけません。
浮動小数点値のローカライズされた文字列表現を作成する場合、NumberFormat のサブクラスを使用します。
d - 変換する double。public static String toHexString(double d)
double 引数の 16 進数文字列表現を返します。次の文字はすべて ASCII 文字です。
NaN」。
-」('\u002D')。符号が正の場合、変換後の文字列に符号文字は表示されない。絶対値 m については、次のとおり:
"Infinity" で表される。したがって、正の無限大の結果は "Infinity"、負の無限大の結果は "-Infinity" となる。
"0x0.0p0" で表される。したがって、負のゼロの結果は "-0x0.0p0"、正のゼロの結果は "0x0.0p0" となる。
double 値の場合は、有効数字と指数のフィールドを表すのに部分文字列が使われる。有効数字は、文字列 "0x1." と、小数部として残りの有効数字の小文字の 16 進表現を続けて表される。すべての桁が 0 でないかぎり (すべてが 0 の場合は単一の 0 を使用)、16 進表現の末尾の 0 は削除される。次に、指数は、指数値で Integer.toString を呼び出して生成するときのように、"p" とそれに続く完全な指数の 10 進数文字列で表される。
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。public static Double valueOf(String s) throws NumberFormatException
s で表される double 値を保持する Double オブジェクトを返します。
s が null の場合、NullPointerException がスローされます。
s 内の先頭と末尾の空白文字は無視されます。空白文字は、String.trim() メソッドで削除されるときのように削除されます。つまり、ASCII の空白文字と制御文字の両方が削除されます。s の残りの文字が、次の字句構文規則に従って FloatValue を構成します。
ここで、Sign、FloatingPointLiteral、HexNumeral、HexDigits、SignedInteger、および FloatTypeSuffix は、『Java™ 言語仕様』の字句構造セクションで規定されているとおりですが、桁間のアンダースコアが受け入れられない点だけは、規定と異なります。
- FloatValue:
- Signopt
NaN- Signopt
Infinity- Signopt FloatingPointLiteral
- Signopt HexFloatingPointLiteral
- SignedInteger
- HexFloatingPointLiteral:
- HexSignificand BinaryExponent FloatTypeSuffixopt
- HexSignificand:
- HexNumeral
- HexNumeral
.0xHexDigitsopt.HexDigits0XHexDigitsopt.HexDigits
- BinaryExponent:
- BinaryExponentIndicator SignedInteger
- BinaryExponentIndicator:
pP
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 - 文字列が解析可能な数値を含まない場合。public static Double valueOf(double d)
double 値を表す Double インスタンスを返します。新規 Double インスタンスが不要な場合、通常このメソッドがコンストラクタ Double(double) に優先して使用されます。その理由は、このメソッドが頻繁に要求される値をキャッシュするので、操作に必要な領域や時間がはるかに少なくて済む場合が多いためです。d - double 値。d を表す Double インスタンス。public static double parseDouble(String s) throws NumberFormatException
Double クラスの valueOf メソッドを実行した場合と同様に、指定された String が表す値に初期化された新しい double 値を返します。s - 解析される文字列。double 値。NullPointerException - 文字列が null の場合NumberFormatException - 文字列が解析可能な double を含まない場合valueOf(String)public static boolean isNaN(double v)
true を、そうでない場合は false を返します。v - 判定される値。true、そうでない場合は false。public static boolean isInfinite(double v)
true を、そうでない場合には false を返します。v - 判定される値。true、そうでない場合は false。public boolean isNaN()
Double 値が非数 (NaN) である場合には true を、そうでない場合は false を返します。true、そうでない場合は false。public boolean isInfinite()
Double 値の絶対値が無限量である場合には true を、そうでない場合には false を返します。true、そうでない場合は false。public String toString()
Double オブジェクトの文字列表現を返します。このオブジェクトが表すプリミティブ double 値は、1 つの引数を取る toString メソッドを実行した場合と同じ文字列に変換されます。toString、クラス: ObjectString 表現。toString(double)public byte byteValue()
Double の値を、byte としてキャストすることによって、byte として返します。public short shortValue()
Double の値を、short としてキャストすることによって、short として返します。shortValue、クラス: Numberdouble 値を short 型に変換したものpublic int intValue()
Double の値を、型 int にキャストすることによって、int として返します。public long longValue()
Double の値を、型 long にキャストすることによって、long として返します。public float floatValue()
Double オブジェクトの float 値を返します。floatValue、クラス: Numberdouble 値を float 型に変換したものpublic double doubleValue()
Double オブジェクトの double 値を返します。doubleValue、クラス: Numberdouble 値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)public boolean equals(Object obj)
true になるのは、引数が null でなく、このオブジェクトが表す double 値と同じ値を保持する double を表す Double オブジェクトである場合だけです。このため、2 つの double 値が等しいと見なされるのは、doubleToLongBits(double) メソッドを各値に適用したときに同一の long 値が返される場合だけです。
ほとんどの場合、クラス Double の 2 つのインスタンス d1 と d2 について、d1.equals(d2) の値が true になるのは、
d1.doubleValue() == d2.doubleValue()
上記の値も true になる場合だけです。しかし、例外事項も 2 つあります。
d1 と d2 がどちらも Double.NaN を表している場合、Double.NaN==Double.NaN の値が false になるにもかかわらず、equals メソッドからは true が返されます。
d1 が +0.0 を表し、d2 が -0.0 を表している場合、あるいはその逆の場合、+0.0==-0.0 の値が true になるにもかかわらず、equal テストの値は false になります。
equals、クラス: Objectobj - 比較対象のオブジェクト。true、そうでない場合は false。doubleToLongBits(double)public static long doubleToLongBits(double value)
ビット 63 (マスク 0x8000000000000000L によって選択されるビット) は、浮動小数点の符号を表します。ビット 62-52 (マスク 0x7ff0000000000000L によって選択されるビット) は、指数を表します。ビット 51-0 (マスク 0x000fffffffffffffL によって選択されるビット) は、浮動小数点の有効値 (仮数と呼ばれる場合もある) を表します。
引数が正の無限大の場合、結果は 0x7ff0000000000000L になります。
引数が負の無限大の場合、結果は 0xfff0000000000000L になります。
引数が NaN の場合、結果は 0x7ff8000000000000L になります。
どの場合も、返される値は long 整数であり、longBitsToDouble(long) メソッドを指定すると、doubleToLongBits への引数と同じ浮動小数点値になります (すべての NaN 値が単一の「正規」NaN 値に収納されることを除く)。
value - double 精度の浮動小数点値。public static long doubleToRawLongBits(double value)
ビット 63 (マスク 0x8000000000000000L によって選択されるビット) は、浮動小数点の符号を表します。ビット 62-52 (マスク 0x7ff0000000000000L によって選択されるビット) は、指数を表します。ビット 51-0 (マスク 0x000fffffffffffffL によって選択されるビット) は、浮動小数点の有効値 (仮数と呼ばれる場合もある) を表します。
引数が正の無限大の場合、結果は 0x7ff0000000000000L になります。
引数が負の無限大の場合、結果は 0xfff0000000000000L になります。
引数が NaN の場合、返される値は実際の NaN 値を示す long 整数です。doubleToLongBits メソッドとは異なり、doubleToRawLongBits メソッドが、すべてのビットパターン符号化 NaN を単一の「正規」NaN 値に収納することはありません。
どの場合も、返される値は long 整数であり、longBitsToDouble(long) メソッドを指定すると、doubleToRawLongBits への引数と同じ浮動小数点値になります。
value - double 精度の浮動小数点値。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 つの値について次の引数から計算できるとします。
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 浮動小数点値。public int compareTo(Double anotherDouble)
Double オブジェクトを数値的に比較します。このメソッドによる比較は、Java 言語の数値比較演算子 (<, <=, ==, >=, >) をプリミティブ double 値に適用した場合とは、次の 2 点で異なります。
Double.NaN は自身に等しく、ほかのすべての double 値 (Double.POSITIVE_INFINITY を含む) よりも大きいとみなされる。
0.0d は -0.0d より大きいとみなされる。
Double オブジェクトの自然順序付けで、equals との一貫性が確保されます。compareTo、インタフェース: Comparable<Double>anotherDouble - 比較対象の Double。anotherDouble がこの Double と同じ数値の場合は値 0。Double が anotherDouble より小さい数値の場合は 0 より小さい値。Double が anotherDouble より大きい数値の場合は 0 より大きい値。public static int compare(double d1,
double d2)
double 値を比較します。返される整数値の符号は、次の呼び出しで返される整数の符号と同じになります。
new Double(d1).compareTo(new Double(d2))
d1 - 比較する最初の doubled2 - 比較する 2 番目の doubled1 がこの d2 と同じ数値の場合は値 0。d1 が d2 より小さい数値の場合は 0 より小さい値。d1 が d2 より大きい数値の場合は 0 より大きい値。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.