java.math

Class BigDecimal

Implemented Interfaces:
Comparable<T>, Serializable

public class BigDecimal
extends Number
implements Comparable<T>

See Also:
Serialized Form

Field Summary

static BigDecimal
ONE
The constant one as a BigDecimal with scale zero.
static int
ROUND_CEILING
static int
ROUND_DOWN
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
static BigDecimal
TEN
The constant ten as a BigDecimal with scale zero.
static BigDecimal
ZERO
The constant zero as a BigDecimal with scale zero.

Constructor Summary

BigDecimal(char[] in)
Constructs a BigDecimal from the given char array, accepting the same sequence of characters as the BigDecimal(String) constructor.
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.
BigDecimal(char[] in, int offset, int len, MathContext mc)
Constructs a BigDecimal from the char subarray and rounding according to the MathContext.
BigDecimal(char[] in, MathContext mc)
Constructs a BigDecimal from the char array and rounding according to the MathContext.
BigDecimal(double num)
BigDecimal(double num, MathContext mc)
Constructs a BigDecimal in the same way as BigDecimal(double) and then rounds according to the MathContext.
BigDecimal(int val)
Constructs a new BigDecimal whose unscaled value is val and whose scale is zero.
BigDecimal(int val, MathContext mc)
Constructs a BigDecimal using the BigDecimal(int) constructor and then rounds according to the MathContext.
BigDecimal(String num)
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.
BigDecimal(BigInteger num)
Constructs a BigDecimal whose unscaled value is num and whose scale is zero.
BigDecimal(BigInteger num, int scale)
Constructs a BigDecimal whose unscaled value is num and whose scale is scale.
BigDecimal(BigInteger num, int scale, MathContext mc)
Constructs a BigDecimal using the BigDecimal(BigInteger, int) constructor and then rounds according to the MathContext.
BigDecimal(BigInteger num, MathContext mc)
Constructs a BigDecimal whose value is given by num rounded according to mc.
BigDecimal(long val)
Constructs a new BigDecimal whose unscaled value is val and whose scale is zero.
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.

Method Summary

BigDecimal
abs()
BigDecimal
abs(MathContext mc)
Returns a BigDecimal whose value is the absolute value of this BigDecimal with rounding according to the given MathContext.
BigDecimal
add(BigDecimal val)
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.
byte
byteValueExact()
Converts this BigDecimal into a byte by first calling longValueExact and then checking that the long returned from that method fits into a byte.
int
compareTo(BigDecimal val)
BigDecimal
divide(BigDecimal divisor)
Performs division, if the resulting quotient requires rounding (has a nonterminating decimal expansion), an ArithmeticException is thrown.
BigDecimal
divide(BigDecimal val, int roundingMode)
BigDecimal
divide(BigDecimal val, int newScale, int roundingMode)
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
BigDecimal
divide(BigDecimal val, RoundingMode roundingMode)
Returns a BigDecimal whose value is (this / val) rounded according to the RoundingMode
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.
BigDecimal
divideToIntegralValue(BigDecimal val)
Returns a BigDecimal whose value is the integer part of the quotient this / val.
double
doubleValue()
boolean
equals(Object o)
Determine whether this Object is semantically equal to another Object.
float
floatValue()
int
hashCode()
Get a value that represents this Object, as uniquely as possible within the confines of an int.
int
intValue()
int
intValueExact()
Converts this BigDecimal into an int by first calling longValueExact and then checking that the long returned from that method fits into an int.
long
longValue()
long
longValueExact()
Converts this BigDecimal to a long value.
BigDecimal
max(BigDecimal val)
BigDecimal
min(BigDecimal val)
BigDecimal
movePointLeft(int n)
BigDecimal
movePointRight(int n)
BigDecimal
multiply(BigDecimal val)
BigDecimal
multiply(BigDecimal val, MathContext mc)
Returns a BigDecimal whose value is (this x val) before it is rounded according to the MathContext mc.
BigDecimal
negate()
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.
BigDecimal
plus()
Returns this BigDecimal.
BigDecimal
plus(MathContext mc)
Returns a BigDecimal whose value is found by rounding this according to the MathContext.
BigDecimal
pow(int n)
Returns a BigDecimal whose value is this to the power of n.
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.
int
precision()
Returns the precision of this BigDecimal (the number of digits in the unscaled value).
BigDecimal
remainder(BigDecimal val)
Returns a BigDecimal whose value is the remainder in the quotient this / val.
BigDecimal
round(MathContext mc)
Returns a BigDecimal which is this BigDecimal rounded according to the MathContext rounding settings.
int
scale()
BigDecimal
scaleByPowerOfTen(int n)
Returns a BigDecimal whose numerical value is the numerical value of this BigDecimal multiplied by 10 to the power of n.
BigDecimal
setScale(int scale)
BigDecimal
setScale(int scale, int roundingMode)
BigDecimal
setScale(int newScale, RoundingMode roundingMode)
Returns a BigDecimal whose value is the same as this BigDecimal but whose representation has a scale of newScale.
short
shortValueExact()
Converts this BigDecimal into a short by first calling longValueExact and then checking that the long returned from that method fits into a short.
int
signum()
BigDecimal
stripTrailingZeros()
Returns a BigDecimal which is numerically equal to this BigDecimal but with no trailing zeros in the representation.
BigDecimal
subtract(BigDecimal val)
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.
BigInteger
toBigInteger()
Converts this BigDecimal to a BigInteger.
BigInteger
toBigIntegerExact()
Converts this BigDecimal into a BigInteger, throwing an ArithmeticException if the conversion is not exact.
String
toEngineeringString()
Returns the String representation of this BigDecimal, using engineering notation if necessary.
String
toPlainString()
Returns a String representation of this BigDecimal without using scientific notation.
String
toString()
Returns the String representation of this BigDecimal, using scientific notation if necessary.
BigDecimal
ulp()
Returns the size of a unit in the last place of this BigDecimal.
BigInteger
unscaledValue()
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.
static BigDecimal
valueOf(long val)
static BigDecimal
valueOf(long val, int scale)

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

Field Details

ONE

public static final BigDecimal ONE
The constant one as a BigDecimal with scale zero.
Since:
1.5

ROUND_CEILING

public static final int ROUND_CEILING
Field Value:
2

ROUND_DOWN

public static final int ROUND_DOWN
Field Value:
1

ROUND_FLOOR

public static final int ROUND_FLOOR
Field Value:
3

ROUND_HALF_DOWN

public static final int ROUND_HALF_DOWN
Field Value:
5

ROUND_HALF_EVEN

public static final int ROUND_HALF_EVEN
Field Value:
6

ROUND_HALF_UP

public static final int ROUND_HALF_UP
Field Value:
4

ROUND_UNNECESSARY

public static final int ROUND_UNNECESSARY
Field Value:
7

ROUND_UP

public static final int ROUND_UP
Field Value:
0

TEN

public static final BigDecimal TEN
The constant ten as a BigDecimal with scale zero.
Since:
1.5

ZERO

public static final BigDecimal ZERO
The constant zero as a BigDecimal with scale zero.
Since:
1.5

Constructor Details

BigDecimal

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 - if in is not a valid BigDecimal representation
Since:
1.5

BigDecimal

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 array
offset - the start of the subarray
len - the length of the subarray
Throws:
NumberFormatException - if in is not a valid BigDecimal representation.
Since:
1.5

BigDecimal

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 array
offset - the start of the subarray
len - the length of the subarray
mc - the MathContext for rounding
Throws:
NumberFormatException - if the char subarray is not a valid BigDecimal representation
ArithmeticException - if the result is inexact but the rounding mode is RoundingMode.UNNECESSARY
Since:
1.5

BigDecimal

public BigDecimal(char[] in,
                  MathContext mc)
Constructs a BigDecimal from the char array and rounding according to the MathContext.
Parameters:
in - the char array
mc - the MathContext
Throws:
NumberFormatException - if in is not a valid BigDecimal representation
ArithmeticException - if the result is inexact but the rounding mode is RoundingMode.UNNECESSARY
Since:
1.5

BigDecimal

public BigDecimal(double num)
            throws NumberFormatException

BigDecimal

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 created
mc - the MathContext that specifies the rounding behaviour
Throws:
ArithmeticException - if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
Since:
1.5

BigDecimal

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

BigDecimal

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) BigDecimal
mc - the MathContext specifying the rounding
Throws:
ArithmeticException - if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
Since:
1.5

BigDecimal

public BigDecimal(String num)
            throws NumberFormatException

BigDecimal

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 BigDecimal
mc - the MathContext that specifies the rounding
Throws:
ArithmeticException - if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
Since:
1.5

BigDecimal

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

BigDecimal

public BigDecimal(BigInteger num,
                  int scale)
Constructs a BigDecimal whose unscaled value is num and whose scale is scale.
Parameters:
num -
scale -

BigDecimal

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 BigDecimal
scale - the scale of the unrounded BigDecimal
mc - the MathContext specifying the rounding
Throws:
ArithmeticException - if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
Since:
1.5

BigDecimal

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 rounding
mc - the MathContext that specifies the precision
Throws:
ArithmeticException - if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
Since:
1.5

BigDecimal

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

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 BigDecimal
mc - the MathContext that specifies the rounding behaviour
Throws:
ArithmeticException - if the result is inexact but the rounding type is RoundingMode.UNNECESSARY
Since:
1.5

Method Details

abs

public BigDecimal abs()

abs

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

add

public BigDecimal add(BigDecimal val)

add

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 augend
mc - 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

byteValueExact

public byte byteValueExact()
Converts this BigDecimal into a byte by first calling longValueExact and then checking that the long returned from that method fits into a byte.
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

compareTo

public int compareTo(BigDecimal val)

divide

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

divide

public BigDecimal divide(BigDecimal val,
                         int roundingMode)
            throws ArithmeticException,
                   IllegalArgumentException

divide

public BigDecimal divide(BigDecimal val,
                         int newScale,
                         int roundingMode)
            throws ArithmeticException,
                   IllegalArgumentException

divide

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 divisor
scale - the scale of the BigDecimal returned
roundingMode - 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

divide

public BigDecimal divide(BigDecimal val,
                         RoundingMode roundingMode)
Returns a BigDecimal whose value is (this / val) rounded according to the RoundingMode
Parameters:
val - the divisor
roundingMode - 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

divideAndRemainder

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

divideToIntegralValue

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

doubleValue

public double doubleValue()
Overrides:
doubleValue in interface Number

equals

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) and b.equals(c), then a.equals(c) must be true as well.
  • It must be symmetric. a.equals(b) and b.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 imply a.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 for a.equals(b) to be true even though a.getClass() != b.getClass(). Also, it is typical to never cause a NullPointerException.

In general, the Collections API (java.util) use the equals 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.

Overrides:
equals in interface Object
Parameters:
Returns:
whether this Object is semantically equal to another

floatValue

public float floatValue()
Overrides:
floatValue in interface Number

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, then a.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 in Hashtable 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 time-consuming, a class may consider caching the results.

The default implementation returns System.identityHashCode(this)

Overrides:
hashCode in interface Object
Returns:
the hash code for this Object

intValue

public int intValue()
Overrides:
intValue in interface Number

intValueExact

public int intValueExact()
Converts this BigDecimal into an int by first calling longValueExact and then checking that the long returned from that method fits into an int.
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

longValue

public long longValue()
Overrides:
longValue in interface Number

longValueExact

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

max

public BigDecimal max(BigDecimal val)

min

public BigDecimal min(BigDecimal val)

movePointLeft

public BigDecimal movePointLeft(int n)

movePointRight

public BigDecimal movePointRight(int n)

multiply

public BigDecimal multiply(BigDecimal val)

multiply

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 multiplicand
mc - 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

negate

public BigDecimal negate()

negate

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

plus

public BigDecimal plus()
Returns this BigDecimal. This is included for symmetry with the method negate().
Returns:
this
Since:
1.5

plus

public BigDecimal plus(MathContext mc)
Returns a BigDecimal whose value is found by rounding this 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

pow

public BigDecimal pow(int n)
Returns a BigDecimal whose value is this to the power of n.
Parameters:
n - the power
Returns:
the new BigDecimal
Since:
1.5

pow

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 power
mc - 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

precision

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.

remainder

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

round

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

scale

public int scale()

scaleByPowerOfTen

public BigDecimal scaleByPowerOfTen(int n)
Returns a BigDecimal whose numerical value is the numerical value of this BigDecimal multiplied by 10 to the power of n.
Parameters:
n - the power of ten
Returns:
the new BigDecimal
Since:
1.5

setScale

public BigDecimal setScale(int scale)
            throws ArithmeticException

setScale

public BigDecimal setScale(int scale,
                           int roundingMode)
            throws ArithmeticException,
                   IllegalArgumentException

setScale

public BigDecimal setScale(int newScale,
                           RoundingMode roundingMode)
Returns a BigDecimal whose value is the same as this BigDecimal but whose representation has a scale of newScale. 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

shortValueExact

public short shortValueExact()
Converts this BigDecimal into a short by first calling longValueExact and then checking that the long returned from that method fits into a short.
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

signum

public int signum()

stripTrailingZeros

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

subtract

public BigDecimal subtract(BigDecimal val)

subtract

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 subtrahend
mc - 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

toBigInteger

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]

toBigIntegerExact

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

toEngineeringString

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

toPlainString

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

toString

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 if scale == 0 is returned. 2. an int adjExp is created which is equal to the negation of scale plus the number of digits in the unscaled value, minus one. 3. if scale >= 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.
Overrides:
toString in interface Object

ulp

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

unscaledValue

public BigInteger unscaledValue()

valueOf

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

valueOf

public static BigDecimal valueOf(long val)

valueOf

public static BigDecimal valueOf(long val,
                                 int scale)
            throws NumberFormatException

java.math.BigDecimal -- Arbitrary precision decimals. Copyright (C) 1999, 2000, 2001, 2003, 2005, 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.