This subclass of java.lang.Number represents a floating-point number of arbitrary size and precision. Because it uses a decimal rather than binary floating-point representation, it is not subject to the rounding errors that the float and double types are. This makes BigDecimal well-suited to financial and similar applications. BigDecimal provides add( ) , subtract( ) , multiply( ) , and divide( ) methods to support basic arithmetic. In Java 5.0, this class has been expanded to define many more methods , including pow( ) for exponentiation. Many of the new methods use a MathContext to specify the desired precision of the result and the RoundingMode to be used to achieve that precision. BigDecimal extends Number and implements the Comparable interface. The compareTo( ) method compares the value of two BigDecimal objects and returns -1, 0, or 1 to indicate the result of the comparison. Use this method in place of the < , <= , > , and >= operators that you'd use with float and double values. A BigDecimal object is represented as an integer of arbitrary size and an integer scale that specifies the number of decimal places in the value. When working with BigDecimal values, you can explicitly specify the precision (i.e., the number of decimal places) you are interested in. Also, whenever a BigDecimal method can discard precision (e.g., in a division operation), you are required to specify what sort of rounding should be performed on the digit to the left of the discarded digit or digits. The eight constants defined by this class specify the available rounding modes. In Java 5.0, however, the preferred way to specify a rounding mode is with the enumerated type RoundingMode . Figure 11-1. java.math.BigDecimalpublic class BigDecimal extends Number implements Comparable<BigDecimal> { // Public Constructors public BigDecimal (BigInteger val ); 5.0 public BigDecimal (int val ); 5.0 public BigDecimal (long val ); public BigDecimal (String val ); 5.0 public BigDecimal (char[ ] in ); public BigDecimal (double val ); 5.0 public BigDecimal (long val , MathContext mc ); 5.0 public BigDecimal (int val , MathContext mc ); 5.0 public BigDecimal (double val , MathContext mc ); 5.0 public BigDecimal (String val , MathContext mc ); 5.0 public BigDecimal (char[ ] in , MathContext mc ); public BigDecimal (BigInteger unscaledVal , int scale ); 5.0 public BigDecimal (BigInteger val , MathContext mc ); 5.0 public BigDecimal (BigInteger unscaledVal , int scale , MathContext mc ); 5.0 public BigDecimal (char[ ] in , int offset , int len ); 5.0 public BigDecimal (char[ ] in , int offset , int len , MathContext mc ); // Public Constants 5.0 public static final BigDecimal ONE ; public static final int ROUND_CEILING ; =2 public static final int ROUND_DOWN ; =1 public static final int ROUND_FLOOR ; =3 public static final int ROUND_HALF_DOWN ; =5 public static final int ROUND_HALF_EVEN ; =6 public static final int ROUND_HALF_UP ; =4 public static final int ROUND_UNNECESSARY ; =7 public static final int ROUND_UP ; =0 5.0 public static final BigDecimal TEN ; 5.0 public static final BigDecimal ZERO ; // Public Class Methods public static BigDecimal valueOf (long val ); 5.0 public static BigDecimal valueOf (double val ); public static BigDecimal valueOf (long unscaledVal , int scale ); // Public Instance Methods public BigDecimal abs ( ); 5.0 public BigDecimal abs (MathContext mc ); public BigDecimal add (BigDecimal augend ); 5.0 public BigDecimal add (BigDecimal augend , MathContext mc ); 5.0 public byte byteValueExact ( ); public int compareTo (BigDecimal val ); Implements: Comparable 5.0 public BigDecimal divide (BigDecimal divisor ); public BigDecimal divide (BigDecimal divisor , int roundingMode ); 5.0 public BigDecimal divide (BigDecimal divisor , RoundingMode roundingMode ); 5.0 public BigDecimal divide (BigDecimal divisor , MathContext mc ); public BigDecimal divide (BigDecimal divisor , int scale , int roundingMode ); 5.0 public BigDecimal divide (BigDecimal divisor , int scale , RoundingMode roundingMode ); 5.0 public BigDecimal[ ] divideAndRemainder (BigDecimal divisor ); 5.0 public BigDecimal[ ] divideAndRemainder (BigDecimal divisor , MathContext mc ); 5.0 public BigDecimal divideToIntegralValue (BigDecimal divisor ); 5.0 public BigDecimal divideToIntegralValue (BigDecimal divisor , MathContext mc ); 5.0 public int intValueExact ( ); 5.0 public long longValueExact ( ); public BigDecimal max (BigDecimal val ); public BigDecimal min (BigDecimal val ); public BigDecimal movePointLeft (int n ); public BigDecimal movePointRight (int n ); public BigDecimal multiply (BigDecimal multiplicand ); 5.0 public BigDecimal multiply (BigDecimal multiplicand , MathContext mc ); public BigDecimal negate ( ); 5.0 public BigDecimal negate (MathContext mc ); 5.0 public BigDecimal plus ( ); 5.0 public BigDecimal plus (MathContext mc ); 5.0 public BigDecimal pow (int n ); 5.0 public BigDecimal pow (int n , MathContext mc ); 5.0 public int precision ( ); 5.0 public BigDecimal remainder (BigDecimal divisor ); 5.0 public BigDecimal remainder (BigDecimal divisor , MathContext mc ); 5.0 public BigDecimal round (MathContext mc ); public int scale ( ); 5.0 public BigDecimal scaleByPowerOfTen (int n ); public BigDecimal setScale (int newScale ); public BigDecimal setScale (int newScale , int roundingMode ); 5.0 public BigDecimal setScale (int newScale , RoundingMode roundingMode ); 5.0 public short shortValueExact ( ); public int signum ( ); 5.0 public BigDecimal stripTrailingZeros ( ); public BigDecimal subtract (BigDecimal subtrahend ); 5.0 public BigDecimal subtract (BigDecimal subtrahend , MathContext mc ); public BigInteger toBigInteger ( ); 5.0 public BigInteger toBigIntegerExact ( ); 5.0 public String toEngineeringString ( ); 5.0 public String toPlainString ( ); 5.0 public BigDecimal ulp ( ); 1.2 public BigInteger unscaledValue ( ); // Methods Implementing Comparable public int compareTo (BigDecimal val ); // Public Methods Overriding Number public double doubleValue ( ); public float floatValue ( ); public int intValue ( ); public long longValue ( ); // Public Methods Overriding Object public boolean equals (Object x ); public int hashCode ( ); public String toString ( ); } Passed Tojavax.xml.datatype.DatatypeFactory.{newDuration( ) , newXMLGregorianCalendar( ) , newXMLGregorianCalendarTime( )} , javax.xml.datatype.Duration.multiply( ) , javax.xml.datatype.XMLGregorianCalendar.{setFractionalSecond( ) , setTime( )} Returned Byjava.util.Scanner.nextBigDecimal( ) , javax.xml.datatype.XMLGregorianCalendar.getFractionalSecond( ) |