Prev Class  Next Class  Frames  No Frames 
Summary: Nested  Field  Method  Constr  Detail: Nested  Field  Method  Constr 
java.lang.Object
java.lang.Number
java.math.BigDecimal
Field Summary  
static BigDecimal 

static int  
static int  
static int  
static int  
static int  
static int  
static int  
static int  
static BigDecimal 

static BigDecimal 

Constructor Summary  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Method Summary  
BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

byte 

int 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal[] 

BigDecimal 

double  
boolean  
float  
int 

int 

int 

long  
long 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

int 

BigDecimal 

BigDecimal 

int 

BigDecimal 

BigDecimal 

BigDecimal 

BigDecimal 

short 

int 

BigDecimal 

BigDecimal 

BigDecimal 

BigInteger 

BigInteger 

String 

String 

String 

BigDecimal 

BigInteger  
static BigDecimal 

static BigDecimal 

static BigDecimal 

Methods inherited from class java.lang.Number  
byteValue , doubleValue , floatValue , intValue , longValue , shortValue 
Methods inherited from class java.lang.Object  
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait 
public static final BigDecimal ZERO
The constant zero as a BigDecimal with scale zero.
 Since:
 1.5
public BigDecimal(char[] in)
Constructs a BigDecimal from the given char array, accepting the same sequence of characters as the BigDecimal(String) constructor.
 Parameters:
in
 the char array
 Throws:
NumberFormatException
 ifin
is not a valid BigDecimal representation
 Since:
 1.5
public BigDecimal(char[] in, int offset, int len)
Constructs a BigDecimal from a char subarray, accepting the same sequence of characters as the BigDecimal(String) constructor.
 Parameters:
in
 the char arrayoffset
 the start of the subarraylen
 the length of the subarray
 Throws:
NumberFormatException
 ifin
is not a valid BigDecimal representation.
 Since:
 1.5
public BigDecimal(char[] in, int offset, int len, MathContext mc)
Constructs a BigDecimal from the char subarray and rounding according to the MathContext.
 Parameters:
in
 the char arrayoffset
 the start of the subarraylen
 the length of the subarraymc
 the MathContext for rounding
 Throws:
NumberFormatException
 if the char subarray is not a valid BigDecimal representationArithmeticException
 if the result is inexact but the rounding mode is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal(char[] in, MathContext mc)
Constructs a BigDecimal from the char array and rounding according to the MathContext.
 Parameters:
in
 the char arraymc
 the MathContext
 Throws:
NumberFormatException
 ifin
is not a valid BigDecimal representationArithmeticException
 if the result is inexact but the rounding mode is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal(double num, MathContext mc)
Constructs a BigDecimal in the same way as BigDecimal(double) and then rounds according to the MathContext.
 Parameters:
num
 the double from which the initial BigDecimal is createdmc
 the MathContext that specifies the rounding behaviour
 Throws:
ArithmeticException
 if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal(int val)
Constructs a new BigDecimal whose unscaled value is val and whose scale is zero.
 Parameters:
val
 the value of the new BigDecimal
 Since:
 1.5
public BigDecimal(int val, MathContext mc)
Constructs a BigDecimal using the BigDecimal(int) constructor and then rounds according to the MathContext.
 Parameters:
val
 the value for the initial (unrounded) BigDecimalmc
 the MathContext specifying the rounding
 Throws:
ArithmeticException
 if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal(String val, MathContext mc)
Constructs a BigDecimal from the String val according to the same rules as the BigDecimal(String) constructor and then rounds according to the MathContext mc.
 Parameters:
val
 the String from which we construct the initial BigDecimalmc
 the MathContext that specifies the rounding
 Throws:
ArithmeticException
 if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal(BigInteger num)
Constructs a BigDecimal whose unscaled value is num and whose scale is zero.
 Parameters:
num
 the value of the new BigDecimal
public BigDecimal(BigInteger num, int scale)
Constructs a BigDecimal whose unscaled value is num and whose scale is scale.
 Parameters:
num
scale

public BigDecimal(BigInteger num, int scale, MathContext mc)
Constructs a BigDecimal using the BigDecimal(BigInteger, int) constructor and then rounds according to the MathContext.
 Parameters:
num
 the unscaled value of the unrounded BigDecimalscale
 the scale of the unrounded BigDecimalmc
 the MathContext specifying the rounding
 Throws:
ArithmeticException
 if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal(BigInteger num, MathContext mc)
Constructs a BigDecimal whose value is given by num rounded according to mc. Since num is already a BigInteger, the rounding refers only to the precision setting in mc, if mc.getPrecision() returns an int lower than the number of digits in num, then rounding is necessary.
 Parameters:
num
 the unscaledValue, before roundingmc
 the MathContext that specifies the precision
 Throws:
ArithmeticException
 if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal(long val)
Constructs a new BigDecimal whose unscaled value is val and whose scale is zero.
 Parameters:
val
 the value of the new BigDecimal
public BigDecimal(long val, MathContext mc)
Constructs a BigDecimal from the long in the same way as BigDecimal(long) and then rounds according to the MathContext.
 Parameters:
val
 the long from which we create the initial BigDecimalmc
 the MathContext that specifies the rounding behaviour
 Throws:
ArithmeticException
 if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal abs(MathContext mc)
Returns a BigDecimal whose value is the absolute value of this BigDecimal with rounding according to the given MathContext.
 Parameters:
mc
 the MathContext
 Returns:
 the new BigDecimal
public BigDecimal add(BigDecimal val, MathContext mc)
Returns a BigDecimal whose value is found first by calling the method add(val) and then by rounding according to the MathContext mc.
 Parameters:
val
 the augendmc
 the MathContext for rounding
 Returns:
this
+val
, rounded if need be
 Throws:
ArithmeticException
 if the value is inexact but the rounding is RoundingMode.UNNECESSARY
 Since:
 1.5
public byte byteValueExact()
Converts this BigDecimal into a byte by first calling longValueExact and then checking that thelong
returned from that method fits into abyte
.
 Returns:
 a byte whose value is
this
 Throws:
ArithmeticException
 if this BigDecimal has a fractional part or is too large to fit into a byte.
 Since:
 1.5
public BigDecimal divide(BigDecimal divisor) throws ArithmeticException, IllegalArgumentException
Performs division, if the resulting quotient requires rounding (has a nonterminating decimal expansion), an ArithmeticException is thrown. #see divide(BigDecimal, int, int)
 Since:
 1.5
public BigDecimal divide(BigDecimal val, int roundingMode) throws ArithmeticException, IllegalArgumentException
public BigDecimal divide(BigDecimal val, int newScale, int roundingMode) throws ArithmeticException, IllegalArgumentException
public BigDecimal divide(BigDecimal val, int scale, RoundingMode roundingMode)
Returns a BigDecimal whose value is (this / val), with the specified scale and rounding according to the RoundingMode
 Parameters:
val
 the divisorscale
 the scale of the BigDecimal returnedroundingMode
 the rounding mode to use
 Returns:
 a BigDecimal whose value is approximately (this / val)
 Throws:
ArithmeticException
 if divisor is zero or the rounding mode is UNNECESSARY but the specified scale cannot represent the value exactly
 Since:
 1.5
public BigDecimal divide(BigDecimal val, RoundingMode roundingMode)
Returns a BigDecimal whose value is (this / val) rounded according to the RoundingMode
 Parameters:
val
 the divisorroundingMode
 the rounding mode to use
 Returns:
 a BigDecimal whose value is approximately (this / val)
 Throws:
ArithmeticException
 if divisor is zero or the rounding mode is UNNECESSARY but the specified scale cannot represent the value exactly
public BigDecimal[] divideAndRemainder(BigDecimal val)
Returns a BigDecimal array, the first element of which is the integer part of this / val, and the second element of which is the remainder of that quotient.
 Parameters:
val
 the divisor
 Returns:
 the above described BigDecimal array
 Throws:
ArithmeticException
 if val == 0
 Since:
 1.5
public BigDecimal divideToIntegralValue(BigDecimal val)
Returns a BigDecimal whose value is the integer part of the quotient this / val. The preferred scale is this.scale  val.scale.
 Parameters:
val
 the divisor
 Returns:
 a BigDecimal whose value is the integer part of this / val.
 Throws:
ArithmeticException
 if val == 0
 Since:
 1.5
public boolean equals(Object o)
Determine whether this Object is semantically equal to another Object.There are some fairly strict requirements on this method which subclasses must follow:
 It must be transitive. If
a.equals(b)
andb.equals(c)
, thena.equals(c)
must be true as well. It must be symmetric.
a.equals(b)
andb.equals(a)
must have the same value. It must be reflexive.
a.equals(a)
must always be true. It must be consistent. Whichever value a.equals(b) returns on the first invocation must be the value returned on all later invocations.
a.equals(null)
must be false. It must be consistent with hashCode(). That is,
a.equals(b)
must implya.hashCode() == b.hashCode()
. The reverse is not true; two objects that are not equal may have the same hashcode, but that has the potential to harm hashing performance.This is typically overridden to throw a
ClassCastException
if the argument is not comparable to the class performing the comparison, but that is not a requirement. It is legal fora.equals(b)
to be true even thougha.getClass() != b.getClass()
. Also, it is typical to never cause aNullPointerException
.In general, the Collections API (
java.util
) use theequals
method rather than the==
operator to compare objects. However,IdentityHashMap
is an exception to this rule, for its own good reasons.The default implementation returns
this == o
.
 Parameters:
 Returns:
 whether this Object is semantically equal to another
 See Also:
Object.hashCode()
public int hashCode()
Get a value that represents this Object, as uniquely as possible within the confines of an int.There are some requirements on this method which subclasses must follow:
 Semantic equality implies identical hashcodes. In other words, if
a.equals(b)
is true, thena.hashCode() == b.hashCode()
must be as well. However, the reverse is not necessarily true, and two objects may have the same hashcode without being equal. It must be consistent. Whichever value o.hashCode() returns on the first invocation must be the value returned on all later invocations as long as the object exists. Notice, however, that the result of hashCode may change between separate executions of a Virtual Machine, because it is not invoked on the same object.
Notice that since
hashCode
is used inHashtable
and other hashing classes, a poor implementation will degrade the performance of hashing (so don't blindly implement it as returning a constant!). Also, if calculating the hash is timeconsuming, a class may consider caching the results.The default implementation returns
System.identityHashCode(this)
 Returns:
 the hash code for this Object
public int intValueExact()
Converts this BigDecimal into an int by first calling longValueExact and then checking that thelong
returned from that method fits into anint
.
 Returns:
 an int whose value is
this
 Throws:
ArithmeticException
 if this BigDecimal has a fractional part or is too large to fit into an int.
 Since:
 1.5
public long longValueExact()
Converts this BigDecimal to a long value.
 Returns:
 the long value
 Throws:
ArithmeticException
 if rounding occurs or if overflow occurs
 Since:
 1.5
public BigDecimal multiply(BigDecimal val, MathContext mc)
Returns a BigDecimal whose value is (this x val) before it is rounded according to the MathContext mc.
 Parameters:
val
 the multiplicandmc
 the MathContext for rounding
 Returns:
 a new BigDecimal with value approximately (this x val)
 Throws:
ArithmeticException
 if the value is inexact but the rounding mode is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal negate(MathContext mc)
Returns a BigDecimal whose value is found first by negating this via the negate() method, then by rounding according to the MathContext mc.
 Parameters:
mc
 the MathContext for rounding
 Returns:
 a BigDecimal whose value is approximately (this)
 Throws:
ArithmeticException
 if the value is inexact but the rounding mode is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal plus()
Returns this BigDecimal. This is included for symmetry with the method negate().
 Returns:
 this
 Since:
 1.5
public BigDecimal plus(MathContext mc)
Returns a BigDecimal whose value is found by roundingthis
according to the MathContext. This is the same as round(MathContext).
 Parameters:
mc
 the MathContext for rounding
 Returns:
 a BigDecimal whose value is
this
before being rounded
 Throws:
ArithmeticException
 if the value is inexact but the rounding mode is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigDecimal pow(int n)
Returns a BigDecimal whose value isthis
to the power ofn
.
 Parameters:
n
 the power
 Returns:
 the new BigDecimal
 Since:
 1.5
public BigDecimal pow(int n, MathContext mc)
Returns a BigDecimal whose value is determined by first calling pow(n) and then by rounding according to the MathContext mc.
 Parameters:
n
 the powermc
 the MathContext
 Returns:
 the new BigDecimal
 Throws:
ArithmeticException
 if n <320 or n > 999999999 or if the result is inexact but the rounding is RoundingMode.UNNECESSARY
 Since:
 1.5
public int precision()
Returns the precision of this BigDecimal (the number of digits in the unscaled value). The precision of a zero value is 1.
 Returns:
 the number of digits in the unscaled value, or 1 if the value is zero.
public BigDecimal remainder(BigDecimal val)
Returns a BigDecimal whose value is the remainder in the quotient this / val. This is obtained by subtract(divideToIntegralValue(val).multiply(val)).
 Parameters:
val
 the divisor
 Returns:
 a BigDecimal whose value is the remainder
 Throws:
ArithmeticException
 if val == 0
 Since:
 1.5
public BigDecimal round(MathContext mc)
Returns a BigDecimal which is this BigDecimal rounded according to the MathContext rounding settings.
 Parameters:
mc
 the MathContext that tells us how to round
 Returns:
 the rounded BigDecimal
public BigDecimal scaleByPowerOfTen(int n)
Returns a BigDecimal whose numerical value is the numerical value of this BigDecimal multiplied by 10 to the power ofn
.
 Parameters:
n
 the power of ten
 Returns:
 the new BigDecimal
 Since:
 1.5
public BigDecimal setScale(int scale, int roundingMode) throws ArithmeticException, IllegalArgumentException
public BigDecimal setScale(int newScale, RoundingMode roundingMode)
Returns a BigDecimal whose value is the same as this BigDecimal but whose representation has a scale ofnewScale
. If the scale is reduced then rounding may occur, according to the RoundingMode.
 Parameters:
newScale
roundingMode

 Returns:
 a BigDecimal whose scale is as given, whose value is
this
with possible rounding
 Throws:
ArithmeticException
 if the rounding mode is UNNECESSARY but rounding is required
 Since:
 1.5
public short shortValueExact()
Converts this BigDecimal into a short by first calling longValueExact and then checking that thelong
returned from that method fits into ashort
.
 Returns:
 a short whose value is
this
 Throws:
ArithmeticException
 if this BigDecimal has a fractional part or is too large to fit into a short.
 Since:
 1.5
public BigDecimal stripTrailingZeros()
Returns a BigDecimal which is numerically equal to this BigDecimal but with no trailing zeros in the representation. For example, if this BigDecimal has [unscaledValue, scale] = [6313000, 4] this method returns a BigDecimal with [unscaledValue, scale] = [6313, 1]. As another example, [12400, 2] would become [124, 4].
 Returns:
 a numerically equal BigDecimal with no trailing zeros
public BigDecimal subtract(BigDecimal val, MathContext mc)
Returns a BigDecimal whose value is found first by calling the method subtract(val) and then by rounding according to the MathContext mc.
 Parameters:
val
 the subtrahendmc
 the MathContext for rounding
 Returns:
this
val
, rounded if need be
 Throws:
ArithmeticException
 if the value is inexact but the rounding is RoundingMode.UNNECESSARY
 Since:
 1.5
public BigInteger toBigInteger()
Converts this BigDecimal to a BigInteger. Any fractional part will be discarded.
 Returns:
 a BigDecimal whose value is equal to floor[this]
public BigInteger toBigIntegerExact()
Converts this BigDecimal into a BigInteger, throwing an ArithmeticException if the conversion is not exact.
 Returns:
 a BigInteger whose value is equal to the value of this BigDecimal
 Since:
 1.5
public String toEngineeringString()
Returns the String representation of this BigDecimal, using engineering notation if necessary. This is similar to toString() but when exponents are used the exponent is made to be a multiple of 3 such that the integer part is between 1 and 999.
 Returns:
 a String representation of this BigDecimal in engineering notation
 Since:
 1.5
public String toPlainString()
Returns a String representation of this BigDecimal without using scientific notation. This is how toString() worked for releases 1.4 and previous. Zeros may be added to the end of the String. For example, an unscaled value of 1234 and a scale of 3 would result in the String 1234000, but the toString() method would return 1.234E+6.
 Returns:
 a String representation of this BigDecimal
 Since:
 1.5
public String toString()
Returns the String representation of this BigDecimal, using scientific notation if necessary. The following steps are taken to generate the result: 1. the BigInteger unscaledValue's toString method is called and ifscale == 0
is returned. 2. an
int adjExp
is created which is equal to the negation ofscale
plus the number of digits in the unscaled value, minus one. 3. ifscale >= 0 && adjExp >= 6
then we represent this BigDecimal without scientific notation. A decimal is added if the scale is positive and zeros are prepended as necessary. 4. if scale is negative or adjExp is less than 6 we use scientific notation. If the unscaled value has more than one digit, a decimal as inserted after the first digit, the character 'E' is appended and adjExp is appended.
public BigDecimal ulp()
Returns the size of a unit in the last place of this BigDecimal. This returns a BigDecimal with [unscaledValue, scale] = [1, this.scale()].
 Returns:
 the size of a unit in the last place of
this
.
 Since:
 1.5
public static BigDecimal valueOf(double val)
Returns a new BigDecimal constructed from the BigDecimal(String) constructor using the Double.toString(double) method to obtain the String.
 Parameters:
val
 the double value used in Double.toString(double)
 Returns:
 a BigDecimal representation of val
 Throws:
NumberFormatException
 if val is NaN or infinite
 Since:
 1.5