|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object
|
+--java.lang.Number
|
+--java.math.BigDecimal
変更が不可能な、任意精度の符号付き 10 進数です。BigDecimal は、任意精度の「スケールなしの整数値」と、小数点以下の桁数を表す負でない 32 ビット整数の「スケール」で構成されます。BigDecimal で表される数値は (unscaledValue/10scale) です。BigDecimal は、基本算術、スケール操作、比較、ハッシング、および書式変換の演算を提供します。
BigDecimal クラスでは、小数部を破棄できる演算 (divide と setScale) に対してユーザが明示的に丸め動作を指定して、ユーザが丸め動作を完全に制御できるようにします。このために、8 つの「丸めモード」が用意されています。
BigDecimal のスケール操作には、スケーリング/丸め演算と小数点移動演算の 2 種類があります。スケーリング/丸め演算 (SetScale) は、値がオペランドの値とほぼ (またはちょうど) 等しいがスケールは指定された値である BigDecimal を返します。この演算では、値に対するわずかな影響で数値の精度が上下します。小数点移動演算 (movePointLeft と movePointRight) は、指定した方向に指定した桁だけ小数点を移動することによりオペランドから作成される BigDecimal を返します。この演算は、精度に影響を与えることなく数値の値を変更します。
説明をわかりやすく簡潔にするために、BigDecimal メソッドの説明では全体を通して擬似コードを使用します。擬似コード式 (i + j) は、値が BigDecimal i の値と BigDecimal j の値の和である BigDecimal を示します。擬似コード式 (i == j) は、BigDecimal i が BigDecimal j と同じ値を表す場合にだけ真であることを示します。ほかの擬似コード式も同じように解釈されます。
注: BigDecimal を SortedMap のキーまたは SortedSet の要素として使用する場合は、注意してください。これは、BigDecimal の自然順序付けが equals と矛盾するからです。詳細は、Comparable、SortedMap または SortedSet を参照してください。
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)
BigDecmal の 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'(0x75) または E(0x45) という文字から構成され、1 以上の 10 進数字が続きます。指数値は Integer.MIN_VALUE から Integer.MAX_VALUE の間に収まっていなくてはなりません。
返される BigDecimal のスケールは、小数点の桁数または文字列に小数点がない場合はゼロとなり、指数を調整します。文字列に指数がある場合、スケールから指数が減算されます。その結果スケールが負となる場合、返される BigDecimal のスケールはゼロとなり、スケールなしの値は 10 の累乗の積となります。この結果、BigDecimal は有効数字 * 10指数 と等しくなります。(今後、負のスケールを認めるようにこの仕様が修正され、スケールのゼロ化およびスケールなしの値の調整は削除される予定です。)
文字型から数値型へのマッピングは Character.digit(char, int) で提供されています。String には、不適切な文字 (空白など) を含めることはできません。
注: NAN、+INFINITY、-INFINITY 以外の float (および double) では、このコンストラクタは Float.toString (および Double.toString) で返される値と互換性があります。この方法は、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_UNNECESSARYpublic 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_UNNECESSARYpublic 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 と比較する BigDecimalpublic int compareTo(Object o)
Comparable 内の compareToo - この BigDecimal と比較する ObjectClassCastException - o が BigDecimal ではない場合compareTo(java.math.BigDecimal),
Comparablepublic boolean equals(Object x)
Object 内の equalsx - この BigDecimal と比較する ObjectcompareTo(java.math.BigDecimal)public BigDecimal min(BigDecimal val)
val - 最小値を計算する値compareTo(java.math.BigDecimal)public BigDecimal max(BigDecimal val)
val - 最大値を計算する値compareTo(java.math.BigDecimal)public int hashCode()
Object 内の hashCodepublic String toString()
Object 内の toStringCharacter.forDigit(int, int),
BigDecimal(java.lang.String)public BigInteger toBigInteger()
public int intValue()
Number 内の intValuepublic long longValue()
Number 内の longValuepublic float floatValue()
Number 内の floatValuepublic double doubleValue()
Number 内の doubleValue
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.