|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.lang.Number | +--java.math.BigDecimal
変更が不可能な、任意精度の符号付き 10 進数です。BigDecimal は、任意精度の「スケールなしの整数値」と、小数点以下の桁数を表す負でない 32 ビット整数の「スケール」で構成されます。BigDecimal で表される数値は (unscaledValue/10scale) です。BigDecimal は、基本算術、スケール操作、比較、ハッシング、および書式変換の演算を提供します。
BigDecimal クラスでは、小数部を破棄できる演算 (、divide(BigDecimal, int, int)
、および setScale(int, int)
) に対してユーザが明示的に丸め動作を指定して、ユーザが丸め動作を完全に制御できるようにします。このために、8 つの「丸めモード」が用意されています。
BigDecimal のスケール操作には、スケーリング/丸め演算と小数点移動演算の 2 種類があります。スケーリング/丸め演算 (setScale) は、値がオペランドの値とほぼ (またはちょうど) 等しいがスケールは指定された値である BigDecimal を返します。この演算では、値に対するわずかな影響で数値の精度が上下します。小数点移動演算 (movePointLeft(int)
と movePointRight(int)
) は、指定した方向に指定した桁だけ小数点を移動することによりオペランドから作成される BigDecimal を返します。この演算は、精度に影響を与えることなく数値の値を変更します。
説明をわかりやすく簡潔にするために、BigDecimal メソッドの説明では全体を通して擬似コードを使用します。擬似コード式 (i + j) は、値が BigDecimal i の値と BigDecimal j の値の和である BigDecimal を示します。擬似コード式 (i == j) は、BigDecimal i が BigDecimal j と同じ値を表す場合にだけ真であることを示します。ほかの擬似コード式も同じように解釈されます。
注: BigDecimal を SortedMap
のキーまたは SortedSet
の要素として使用する場合は、注意してください。これは、BigDecimal の自然順序付けが equals と矛盾するからです。詳細は、Comparable
、SortedMap
または SortedSet
を参照してください。
このクラスのメソッドおよびコンストラクタはすべて、入力パラーメータに対して null オブジェクト参照が渡されると NullPointerException
をスローします。
BigInteger
,
SortedMap
,
SortedSet
,
直列化された形式フィールドの概要 | |
static int |
ROUND_CEILING
正の無限大に近づくように丸めるモードです。 |
static int |
ROUND_DOWN
0 に近づくように丸めるモードです。 |
static int |
ROUND_FLOOR
負の無限大に近づくように丸めるモードです。 |
static int |
ROUND_HALF_DOWN
「もっとも近い数字」 に丸めるモードです。 |
static int |
ROUND_HALF_EVEN
「もっとも近い数字」 に丸めるモードです。 |
static int |
ROUND_HALF_UP
「もっとも近い数字」に丸めるモードです。 |
static int |
ROUND_UNNECESSARY
要求される演算の結果が正確であり、丸めが必要でないことを表す丸めモードです。 |
static int |
ROUND_UP
0 から離れるように丸めるモードです。 |
コンストラクタの概要 | |
BigDecimal(BigInteger val)
BigInteger を BigDecimal に変換します。 |
|
BigDecimal(BigInteger unscaledVal,
int scale)
BigInteger のスケールなしの値と int スケールを BigDecimal に変換します。 |
|
BigDecimal(double val)
double を BigDecimal に変換します。 |
|
BigDecimal(String val)
BigDecimal の String 表現を BigDecimal に変換します。 |
メソッドの概要 | |
BigDecimal |
abs()
値がこの BigDecimal の絶対値でスケールが this.scale() の BigDecimal を返します。 |
BigDecimal |
add(BigDecimal val)
値が (this + val) でスケールが max(this.scale(), val.scale()) の BigDecimal を返します。 |
int |
compareTo(BigDecimal val)
この BigDecimal と指定された BigDecimal を比較します。 |
int |
compareTo(Object o)
この BigDecimal と指定された Object を比較します。 |
BigDecimal |
divide(BigDecimal val,
int roundingMode)
値が (this / val) でスケールが this.scale() である BigDecimal を返します。 |
BigDecimal |
divide(BigDecimal val,
int scale,
int roundingMode)
値が (this / val) で、スケールが指定されたものである BigDecimal を返します。 |
double |
doubleValue()
この BigDecimal を double に変換します。 |
boolean |
equals(Object x)
この BigDecimal と指定された Object が等しいかどうかを比較します。 |
float |
floatValue()
この BigDecimal を float に変換します。 |
int |
hashCode()
この BigDecimal のハッシュコードを返します。 |
int |
intValue()
この BigDecimal を int に変換します。 |
long |
longValue()
この BigDecimal を long に変換します。 |
BigDecimal |
max(BigDecimal val)
この BigDecimal と val の最大値を返します。 |
BigDecimal |
min(BigDecimal val)
この BigDecimal と val の最小値を返します。 |
BigDecimal |
movePointLeft(int n)
小数点を n 桁左へ移動してこれに等しい BigDecimal を返します。 |
BigDecimal |
movePointRight(int n)
小数点を指定された桁数だけ右方向に移動させます。 |
BigDecimal |
multiply(BigDecimal val)
値が (this * val) でスケールが (this.scale() + val.scale()) の BigDecimal を返します。 |
BigDecimal |
negate()
値が (-this) でスケールが this.scale() の BigDecimal を返します。 |
int |
scale()
この BigDecimal の「スケール」を返します。 |
BigDecimal |
setScale(int scale)
スケールが指定された値であり、値がこの BigDecimal と等しい BigDecimal を返します。 |
BigDecimal |
setScale(int scale,
int roundingMode)
スケールが指定された値であり、かつスケールなしの値が、この BigDecimal のスケールなしの値と、総体値を維持できる適当な 10 の累乗の積または商により決定される BigDecimal を返します。 |
int |
signum()
この BigDecimal の符号値を返します。 |
BigDecimal |
subtract(BigDecimal val)
値が (this - val) でスケールが max(this.scale(), val.scale()) の BigDecimal を返します。 |
BigInteger |
toBigInteger()
この BigDecimal を BigInteger に変換します。 |
String |
toString()
この BigDecimal の String 表現を返します。 |
BigInteger |
unscaledValue()
値がこの BigDecimal の「スケールなしの値」である BigDecimal を返します ((this * 10this.scale()) を計算する)。 |
static BigDecimal |
valueOf(long val)
long 値をスケールが 0 の BigDecimal に変換します。 |
static BigDecimal |
valueOf(long unscaledVal,
int scale)
long のスケールなしの値と int スケールを BigDecimal に変換します。 |
クラス java.lang.Number から継承したメソッド |
byteValue, shortValue |
クラス java.lang.Object から継承したメソッド |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
フィールドの詳細 |
public static final int ROUND_UP
public static final int ROUND_DOWN
public static final int ROUND_CEILING
public static final int ROUND_FLOOR
public static final int ROUND_HALF_UP
public static final int ROUND_HALF_DOWN
public static final int ROUND_HALF_EVEN
public static final int ROUND_UNNECESSARY
コンストラクタの詳細 |
public BigDecimal(String val)
小数部は、小数点と 0 以上の 10 進数字で構成されます。この文字列では、整数部または小数部が少なくとも 1 桁は必要です。符号の付いた数字は、整数部および小数部いずれも significand として参照されます。
指数は、'e' ('\u0075') または 'E' ('\u0045') という文字から構成され、1 以上の 10 進数字が続きます。指数値は -Integer.MAX_VALUE
(Integer.MIN_VALUE
+1) から Integer.MAX_VALUE
の間に収まっている必要があります。
つまり、このコンストラクタが受け入れる文字列は次の文法によって記述されます。
- BigDecimalString:
- Signopt Significand Exponentopt
- Sign:
+
-
- Significand:
- IntegerPart
.
FractionPartopt.
FractionPart- IntegerPart
- IntegerPart:
- Digits
- FractionPart:
- Digits
- Exponent:
- ExponentIndicator SignedInteger
- ExponentIndicator:
e
E
- SignedInteger:
- Signopt Digits
- Digits:
- Digit
- Digits Digit
- Digit:
Character.isDigit(char)
がtrue
を返す任意の文字 (0、1、2 など)
返される BigDecimal のスケールは、小数点の桁数または文字列に小数点がない場合はゼロとなり、指数を調整します。文字列に指数がある場合、スケールから指数が減算されます。その結果スケールが負となる場合、返される BigDecimal のスケールはゼロとなり、スケールなしの値は 10 の累乗の積となります。この結果、BigDecimal は有効数字 × 10指数 と等しくなります。(今後、負のスケールを認めるようにこの仕様が修正され、スケールのゼロ化およびスケールなしの値の調整は削除される予定です。)
文字型から数値型へのマッピングは Character.digit(char, int)
で提供され、基数 10 への変換に設定されています。String には、不適切な文字 (空白など) を含めることはできません。
注: ほかの float および double の NaN、および ±Infinity の値では、このコンストラクタは Float.toString(float)
および Double.toString(double)
.で返される値と互換性があります。この方法は、float または double を BigDecimal に変換する良い方法です。その理由は、BigDecimal(double)
コンストラクタの予測ができなくても影響されないからです。
注: リリース 1.3 以降では、先頭のプラス記号および末尾の指数を任意で付けることができるようになりました。
val
- BigDecimal の String 表現
NumberFormatException
- val は BigDecimal の表現としては無効であるpublic BigDecimal(double val)
注: このコンストラクタの結果は予想外である可能性があります。new BigDecimal(.1) は正確に .1 と等しいと思われるかもしれませんが、実際には .1000000000000000055511151231257827021181583404541015625 となります。これは .1 を double (または有限長 2 進小数) として正確に表現できないためです。したがって、コンストラクタに渡されている long 値は正確に .1 と等しいわけではありません。
一方、String を引数とするコンストラクタは予測可能です。new BigDecimal(".1") は、「正確に」 .1 と等しくなります。そのため、通常は、double を引数とするコンストラクタの代わりに String を引数とするコンストラクタを使用することをお勧めします。
val
- BigDecimal に変換する double 値
NumberFormatException
- val は、Double.NEGATIVE_INFINITY、Double.POSITIVE_INFINITY、または Double.NaN と等しいpublic BigDecimal(BigInteger val)
val
- BigDecimal に変換する BigInteger 値public BigDecimal(BigInteger unscaledVal, int scale)
unscaledVal
- BigDecimal のスケールなしの値scale
- BigDecimal のスケール
NumberFormatException
- スケールが負の場合メソッドの詳細 |
public static BigDecimal valueOf(long unscaledVal, int scale)
unscaledVal
- BigDecimal のスケールなしの値scale
- BigDecimal のスケール
public static BigDecimal valueOf(long val)
val
- BigDecimal の値
public BigDecimal add(BigDecimal val)
val
- この BigDecimal に加算する値
public BigDecimal subtract(BigDecimal val)
val
- この BigDecimal から減算する値
public BigDecimal multiply(BigDecimal val)
val
- この BigDecimal で乗算する値
public BigDecimal divide(BigDecimal val, int scale, int roundingMode)
val
- この BigDecimal を除算する値scale
- 返される BigDecimal の商のスケールroundingMode
- 適用する丸めモード
ArithmeticException
- val が 0 であるか、scale が負であるか、あるいは roundingMode==ROUND_UNNECESSARY で、指定したスケールが除算の結果を正確に表すには十分でない場合
IllegalArgumentException
- roundingMode が有効な丸めモードを示さない場合ROUND_UP
,
ROUND_DOWN
,
ROUND_CEILING
,
ROUND_FLOOR
,
ROUND_HALF_UP
,
ROUND_HALF_DOWN
,
ROUND_HALF_EVEN
,
ROUND_UNNECESSARY
public BigDecimal divide(BigDecimal val, int roundingMode)
val
- この BigDecimal を除算する値roundingMode
- 適用する丸めモード
ArithmeticException
- val==0 であるか、あるいは roundingMode==ROUND_UNNECESSARY で this.scale() が除算の結果を正確に表すには十分でない場合
IllegalArgumentException
- roundingMode が有効な丸めモードを示さない場合ROUND_UP
,
ROUND_DOWN
,
ROUND_CEILING
,
ROUND_FLOOR
,
ROUND_HALF_UP
,
ROUND_HALF_DOWN
,
ROUND_HALF_EVEN
,
ROUND_UNNECESSARY
public BigDecimal abs()
public BigDecimal negate()
public int signum()
public int scale()
public BigInteger unscaledValue()
public BigDecimal setScale(int scale, int roundingMode)
scale
- 返される BigDecimal の値のスケールroundingMode
- 適用する丸めモード
ArithmeticException
- スケールが負であるか、あるいは roundingMode==ROUND_UNNECESSARY で、指定されたスケーリング演算で丸めが必要な場合
IllegalArgumentException
- roundingMode が有効な丸めモードを示さない場合ROUND_UP
,
ROUND_DOWN
,
ROUND_CEILING
,
ROUND_FLOOR
,
ROUND_HALF_UP
,
ROUND_HALF_DOWN
,
ROUND_HALF_EVEN
,
ROUND_UNNECESSARY
public BigDecimal setScale(int scale)
このメソッドは setScale の 2 つの引数を使うバージョンと同じ結果を返しますが、丸めを指定する必要のない場合に、呼び出し側は指定する手間を省くことができます。
scale
- 返される BigDecimal の値のスケール
ArithmeticException
- スケールが負であるか、あるいは指定したスケール演算で丸めが必要な場合setScale(int, int)
public BigDecimal movePointLeft(int n)
n
- 小数点を左へ移動する桁数
public BigDecimal movePointRight(int n)
n
- 小数点を右へ移動する桁数
public int compareTo(BigDecimal val)
val
- この BigDecimal と比較する BigDecimal
public int compareTo(Object o)
compareTo(java.math.BigDecimal)
と同じように動作し、それ以外の場合は ClassCastException をスローします (BigDecimal はほかの BigDecimal としか比較できないため)。
Comparable
内の compareTo
o
- この BigDecimal と比較する Object
ClassCastException
- o が BigDecimal ではない場合compareTo(java.math.BigDecimal)
,
Comparable
public boolean equals(Object x)
compareTo(java.math.BigDecimal)
と違い、このメソッドは、2 つの BigDecimal が値もスケールも同じである場合にだけ等しいと見なします (したがって、このメソッドでは 2.0 と 2.00 は等しくない)。
Object
内の equals
x
- この BigDecimal と比較する Object
compareTo(java.math.BigDecimal)
public BigDecimal min(BigDecimal val)
val
- 最小値を計算する値
compareTo(java.math.BigDecimal)
メソッドで定義されている比較方法で値が等しい場合は、どちらかがが返されるcompareTo(java.math.BigDecimal)
public BigDecimal max(BigDecimal val)
val
- 最大値を計算する値
compareTo(java.math.BigDecimal)
メソッドで定義されている比較方法で値が等しい場合は、どちらかがが返されるcompareTo(java.math.BigDecimal)
public int hashCode()
Object
内の hashCode
Object.equals(java.lang.Object)
,
Hashtable
public String toString()
Character.forDigit(int, int)
による数字から文字へのマッピングが使用されます。先行するマイナス符号は符号を示すために使用され、小数点以下の桁数はスケールを示すために使用されます (この表現は String を引数とするコンストラクタと互換性がある)。
Object
内の toString
Character.forDigit(int, int)
,
BigDecimal(java.lang.String)
public BigInteger toBigInteger()
public int intValue()
Number
内の intValue
public long longValue()
Number
内の longValue
public float floatValue()
Number
内の floatValue
public double doubleValue()
Number
内の doubleValue
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.