全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス

クラス java.math.BigDecimal

java.lang.Object
   |
   +----java.lang.Number
           |
           +----java.math.BigDecimal

public class BigDecimal
extends Number
変更が不可能な、任意精度の符号付き十進数。BigDecimal は、任意精度の整数値と、小数点の右辺の小数点以下の桁数を表す負でない整数スケールで構成されます (BigDecimal で表される数値は intVal/10**scale)。BigDecimals は、基本算術、スケール操作、比較、書式変換、およびハッシングの演算を提供します。

BigDecimal クラスは、まるめ動作に対しユーザー絶対制御を行い、精度を破棄できる演算 (除算と setScale) に対しユーザーに明示的にまるめ動作を指定させます。 8 つのまるめモード はこのために用意されているものです。 BigDecimal のスケール操作には、スケーリング/まるめ演算と小数点移動演算の 2 種類の演算があります。スケーリング/まるめ演算 (SetScale) は、値がオペランドの値とほぼ (またはちょうど)等しいがスケールは指定された値である BigDecimal を返します。この演算は、値に対するわずかな影響で数値の精度を上げたり下げたりします。小数点移動演算 (movePointLeft と movePointRight) は、指定した方向に指定した桁だけ小数点を移動することによりオペランドから生成される BigDecimal を返します。この演算は、精度に影響を与えることなく数値の値を変更します。

参照:
BigInteger

Variable Index

 o ROUND_CEILING
BigDecimalが正の場合は ROUND_UP を実行し、負の場合は ROUND_DOWN を実行する。
 o ROUND_DOWN
破棄される少数部に先行する桁は増やさない(つまり切り捨て)。
 o ROUND_FLOOR
BigDecimal が正の場合は ROUND_DOWN を実行し、負の場合は ROUND_UP を実行する。
 o ROUND_HALF_DOWN
破棄される少数部が .5 を超える場合は ROUND_UP を実行し、それ以外の場合は ROUND_DOWN を実行する。
 o ROUND_HALF_EVEN
破棄される少数部の左辺の桁が奇数の場合は ROUND_HALF_UP を実行し、偶数の場合は ROUND_HALF_DOWN を実行する。
 o ROUND_HALF_UP
破棄される少数部が .5 以上の場合は ROUND_UP を実行し、それ以外の場合は ROUND_DOWN を実行する。
 o ROUND_UNNECESSARY
この "疑似四捨五入モード" は、要求される演算が正確な結果となりそのため四捨五入が不要であることの表明である。
 o ROUND_UP
0 桁でない破棄された少数部に先行する桁を常に増分する。

Constructor Index

 o BigDecimal(BigInteger)
BigInteger を BigDecimal に変換する。
 o BigDecimal(BigInteger, int)
BigInteger とスケールを BigDecimal に変換する。
 o BigDecimal(double)
double を BigDecimal に変換する。
 o BigDecimal(String)
任意のマイナス符号と、それに続く 0 個以上の小数点以下の桁 (小数点と 0 個以上の小数点以下の桁からなる任意の少数部が続く) を持つ文字列から BigDecimal を構築する。

Method Index

 o abs()
値がこの数値の絶対値でありスケールが this.scale() の BigDecimal を返す。
 o add(BigDecimal)
値が (this + val) でありスケールが MAX(this.scale(), val.scale) である BigDecimal を返す。
 o compareTo(BigDecimal)
この数値が val よりも小さい場合は -1、val と等しい場合は 0、val を超える場合は 1 を返す。
 o divide(BigDecimal, int)
値が (this / val) でありスケールが this.scale() の BigDecimal を返す。
 o divide(BigDecimal, int, int)
値が (this / val) であり、スケールが指定された内容である BigDecimal を返す。
 o doubleValue()
数値を double に変換する。
 o equals(Object)
x が、値がこの数値に等しい BigDecimal の場合は、真を返す。
 o floatValue()
この数値を float に変換する。
 o hashCode()
このオブジェクトのハッシュコードを計算する。
 o intValue()
この数値を int に変換する。
 o longValue()
この数値を long に変換する。
 o max(BigDecimal)
this および valのうち大きい方と同じ値を持つ BigDecimal を返す。
 o min(BigDecimal)
this および val のうち小さい方と同じ値を持つ BigDecimal を返す。
 o movePointLeft(int)
この値に等しい BigDecimal を、左方向へ小数点を n 桁移動させて返す。
 o movePointRight(int)
指定する桁数だけ右方向へ小数点を移動する。
 o multiply(BigDecimal)
値が (this * val) でスケールが this.scale() + val.scale である BigDecimal を返す。
 o negate()
値が (-1 *this) でスケールが this.scale() である BigDecimal を返す。
 o scale()
この数値のスケールを返す。
 o setScale(int)
スケールが指定される値で値がこの数値にちょうど等しい BigDecimal を返す。
 o setScale(int, int)
スケールが指定する値であり、整数値がこの BigDecimal の整数値と総体値を維持できる適当な 10 の累乗の積または商により決定される BigDecimal を返す。
 o signum()
この数値の signum 関数を返す (つまり、この数値の値が負の場合は -1、ゼロの場合は 0、正の場合は 1)。
 o subtract(BigDecimal)
値が (this - val) であり、スケールが MAX(this.scale(), val.scale) である BigDecimal を返す。.
 o toBigInteger()
この数値を BigInteger に変換する。
 o toString()
この数値の文字列表現を返す。
 o valueOf(long)
BigDecimal を一定の値とゼロのスケールとともに返す。
 o valueOf(long, int)
(val/10**scale) の値を持つ BigDecimal を返す。

Variables

 o ROUND_UP
  public static final int ROUND_UP
破棄される 0 以外の少数部に先行する桁を常に増分します。この四捨五入モードは絶対値は減らすことがない点に注意 (ゼロから離れるようにまるめる)。

 o ROUND_DOWN
  public static final int ROUND_DOWN
破棄される少数部に先行する桁を増分しません (つまり切り捨て)。この四捨五入モードは絶対値を増やすことがない点に注意 (ゼロに近づくようにまるめる) 。

 o ROUND_CEILING
  public static final int ROUND_CEILING
BigDecimal が正の場合は ROUND_UP を実行し、 BigDecimal が負の場合は ROUND_DOWN を実行します。この四捨五入モードは値を減らすことはない点に注意 (正の無限大に向けてまるめる)。

 o ROUND_FLOOR
  public static final int ROUND_FLOOR
BigDecimal が正の場合は ROUND_DOWN を実行し、負の場合は ROUND_UP を実行します。この四捨五入モードは値を増やすことはない点に注意 (負の無限大に向けてまるめる)。

 o ROUND_HALF_UP
  public static final int ROUND_HALF_UP
破棄される少数部が .5 以上の場合は ROUND_UP を実行し、それ以外では ROUND_DOWN を実行します ("最も近い数字" にまるめる。ただし、両隣りが等距離の場合は切り上げる。)

 o ROUND_HALF_DOWN
  public static final int ROUND_HALF_DOWN
破棄する少数部が .5 を超える場合は ROUND_UP を実行し、それ以外の場合は ROUND_DOWN を実行します ("最も近い数字"にまるめる。ただし、双方の隣接する数字が等距離にある場合は切り捨て)。

 o ROUND_HALF_EVEN
  public static final int ROUND_HALF_EVEN
破棄する少数部の左辺の桁が奇数の場合は ROUND_HALF_UP を実行し、それが偶数の場合は ROUND_HALF_DOWN を実行します ("最も近い数字" にまるめる。ただし双方の数字が等距離にある場合は偶数側にまるめる)

 o ROUND_UNNECESSARY
  public static final int ROUND_UNNECESSARY
この "疑似まるめモード" は、要求される演算が正確な結果を持ち、そのためまるめが必要でないことの表明です。このまるめモードが正確でない結果を出す演算で指定される場合は、算術例外がスローされます。

Constructors

 o BigDecimal
 public BigDecimal(String val) throws NumberFormatException
任意のマイナス符号と、それに続く 0 個以上の小数点以下の列 (小数点と 0 個以上の小数点以下の桁からなる任意の小数部が続く) を持つ文字列から BigDecimal を構築します。 この文字列は、整数部または少数部に桁が少なくとも 1 つはなければなりません。構築される BigDecimal のスケールは、文字列内の小数点の右辺の桁数、あるいは文字列に小数点が含まれない場合は 0 となります。文字型から数値型へのマッピングは Character.digit で提供されています。不適切な文字 (空白を含む) はすべて NumberFormatException となります。

 o BigDecimal
 public BigDecimal(double val) throws NumberFormatException
double を BigDecimal に変換する。BigDecimal のスケールは、(10**scale * val) が整数であるような最小の値です。値が、負の無限大、正の無限大、または NaN である double は、 NumberFormatException となります。

 o BigDecimal
  public BigDecimal(BigInteger val)
BigInteger を BigDecimal に変換します。BigDecimal のスケールはゼロです。

 o BigDecimal
 public BigDecimal(BigInteger val,
                   int scale) throws NumberFormatException
BigInteger とスケールを BigDecimal に変換します。BigDecimal の値は (BigInteger/10**scale) です。負のスケールは NumberFormatException となります。

Methods

 o valueOf
 public static BigDecimal valueOf(long val,
                                  int scale) throws NumberFormatException
(val/10**scale) の値とともに BigDecimal を返します。このメソッドは、よく使用される (0 や 1 のような) BigDecimal の再使用を許し、エクスポートされる定数を不要にするために long を引数とする構築子の代わりに提供されます。負のスケールは NumberFormatException となります。

 o valueOf
  public static BigDecimal valueOf(long val)
特定の値とゼロのスケールとともに BigDecimal を返します。このメソッドは、よく使用される (0 や 1 のような) BigDecimal の再使用を許し、エクスポートされる定数を不要にするために long を引数とする構築子の代わりに提供されます。

 o add
  public BigDecimal add(BigDecimal val)
値が (this + val) でスケールが MAX(this.scale(), val.scale) の BigDecimal を返します。

 o subtract
  public BigDecimal subtract(BigDecimal val)
値が (当該 - val) でスケールが MAX(this.scale(), val.scale) の BigDecimal を返します。

 o multiply
  public BigDecimal multiply(BigDecimal val)
値が (this * val) でスケールが this.scale() + val.scaleの BigDecimal を返します。

 o divide
 public BigDecimal divide(BigDecimal val,
                          int scale,
                          int roundingMode) throws ArithmeticException, IllegalArgumentException
値が (this / val) でスケールが指定したものである BigDecimal を返します。まるめを行い一定のスケールで結果を生成する必要がある場合は、指定したまるめモードが適用される。val == 0、スケール < 0、またはまるめモードが ROUND_UNNECESSARY で、指定するスケールが除算の結果を正確に表すのには十分でない場合は、 ArithmeticException がスローされます。 roundingMode が有効なまるめモードを示さない場合は、IllegalArgumentException をスローします。

 o divide
 public BigDecimal divide(BigDecimal val,
                          int roundingMode) throws ArithmeticException, IllegalArgumentException
値が (this / val) でスケールが this.scale() である BigDecimal を返します。まるめを行い一定のスケールで結果を生成する必要がある場合は、指定したまるめモードが適用されます。val == 0 の場合は、ArithmeticException をスローします。roundingMode が有効なまるめモードを示さない場合は、IllegalArgumentException をスローします。

 o abs
  public BigDecimal abs()
値がこの数値の絶対値でスケールが this.scale() の BigDecimal を返します。

 o negate
  public BigDecimal negate()
値が -1 * 当該 でスケールが this.scale() の BigDecimal を返します。

 o signum
  public int signum()
この値の signum 関数を返します (つまり、この数値が負の場合は -1、ゼロの場合は 0、正の場合は 1)。

 o scale
  public int scale()
この数値のスケールを返します。

 o setScale
 public BigDecimal setScale(int scale,
                            int roundingMode) throws ArithmeticException, IllegalArgumentException
スケールが指定する値であり、整数値がこの BigDecimal の整数値と、総体値を維持できる適当な 10 の累乗の積または商により決定される BigDecimal を返します。スケールが演算で減らされる場合、整数値は (掛けるよりも) 割る必要があり、精度が失われる可能性があります。この場合、指定するまるめモードが除算に適用される。スケールが負、またはまるめモードが ROUND_UNNECESSARY で、指定するスケーリング演算を精度を失うことなく行うのが不可能な場合、ArithmeticException をスローします。roundingMode が有効なまるめモードを示さない場合は、IllegalArgumentException をスローします。

 o setScale
 public BigDecimal setScale(int scale) throws ArithmeticException, IllegalArgumentException
スケールが指定する値であり値がこの数値にちょうど等しい、 BigDecimal返します。これが可能でない場合は ArithmeticException をスローします。この呼び出しはスケールを増やすのによく使用され、その場合には指定するスケールと正しい値の BigDecimal の存在が保証されます。この呼び出しは、数値がその小数部の最後に精度を失うことなく再スケーリングを見込むことができる十分なゼロ (その整数値における 10 の因数) を持っていることを呼び出し側が認識している場合に、スケールを減らすのにも使用できます。この呼び出しは setScale の 2 つの引数バージョンと同じ結果を返しますが、不適切な場合にはまるめを呼び出し側が指定する手間を省くことができます。

 o movePointLeft
  public BigDecimal movePointLeft(int n)
n 桁左へ移動した小数点を付けてこれに等しい BigDecimal を返します。n が負でない場合は、呼び出しは単に n をスケールに加えます。n が負の場合は、呼び出しは movePointRight(-n) に等しい 値です(この呼び出しが返す BigDecimal は、値 (当該 * 10**-n) とスケール MAX(this.scale()+n, 0) を持つ)。

 o movePointRight
  public BigDecimal movePointRight(int n)
小数点を右方向へ指定する桁数だけ移動させる。この数値のスケールが n 以上の場合は、呼び出しは単にスケールから n を引きます。それ以外の場合は、スケールをゼロにセットし、その整数値に 10 ** (n - this.scale) を掛けます。n が負の場合は、呼び出しは movePointLeft(-n) に等しくなります (この呼び出しが返す BigDecimal は、値 (当該 * 10**n) とスケール MAX(this.scale()-n, 0) を持つ)。

 o compareTo
  public int compareTo(BigDecimal val)
この数値が val 未満の場合は -1、val に等しい場合は 0、val より大きい場合は 1 を返します。値は等しいが異なるスケールを持つ 2 つの BigDecimals (例えば、2.0 と 2.00) を、このメソッドは等しい物と見なします。このメソッドは、6 つの boolean 型の比較演算子 (<, ==, >, >=, !=, <=) のそれぞれに対する個々のメソッドの代わりに提供されます。これらの比較を行うには (x.compareTo(y) <op> 0) という組み合わせを推奨します。この場合、<op> には 6 つの演算子のうちの 1 つが入ります。

 o equals
  public boolean equals(Object x)
x がこの数値に等しい BigDecimal の場合は真を返します。このメソッドは、BigDecimal をハッシュキーとして使用するために提供されています。compareTo と違い、このメソッドは、2 つの BigDecimal が値もスケールも同じである場合のみ等しいと見なします。

オーバーライド:
クラス Object 内の equals
 o min
  public BigDecimal min(BigDecimal val)
this および val のうち小さい方と同じ値を持つ BigDecimal を返します。値が (compareTo 演算子で定義されている比較方法で) 等しい場合は、それが返されます。

 o max
  public BigDecimal max(BigDecimal val)
this および val のうち大きい方と同じ値を持つ BigDecimal を返す。値が (compareTo 演算子で定義されている比較方法で) 等しい場合はそれが返されます。

 o hashCode
  public int hashCode()
このオブジェクトのハッシュコードを計算します。値が等しいがスケールが異なる (例えば、2.0 と 2.00) 2 つの BigDecimal は、通常同じハッシュコードを持ちません。

オーバーライド:
クラス Object 内の hashCode
 o toString
  public String toString()
この数値の文字列表現を返します。Character.forDigit が提供する文字型から数値型へのマッピングが使用されます。符号とスケールを示すのにマイナス符号と小数点が使用されます (この表現は (String, int) の引数の構築子と互換性があります)。

オーバーライド:
クラス Object 内の toString
 o toBigInteger
  public BigInteger toBigInteger()
この数値を BigInteger に変換します。これは、Java 言語仕様にもとづく標準の縮小プリミティブ変換です。この数値の小数部はすべて切り捨てられる点に注意。

 o intValue
  public int intValue()
この値を int に変換します。これは、Java 言語仕様にもとづく標準の縮小プリミティブ変換です。この数値の小数部はすべて切り捨てられることに注意。

オーバーライド:
クラス Number 内の intValue
 o longValue
  public long longValue()
この数値を long に変換します。これは、Java 言語仕様にもとづく標準の縮小プリミティブ変換です。この数値の小数部はすべて切り捨てられることに注意。

オーバーライド:
クラス Number 内の longValue
 o floatValue
  public float floatValue()
この値を float に変換します。Java 言語仕様に定義された double から float への縮小プリミティブ変換に類似しています。数値の絶対値が大きすぎて float として表すことができない場合は、正または負の無限大に変換されます。

オーバーライド:
クラス Number 内の floatValue
 o doubleValue
  public double doubleValue()
数値を double に変換します。Java 言語仕様に定義されている double から float への縮小プリミティブ変換に類似しています。数値の絶対値が大きすぎて double として表すことができない場合は、正または負の無限大に変換されます。

オーバーライド:
クラス Number 内の doubleValue

全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス