Merged gcj-eclipse branch to trunk.

From-SVN: r120621
This commit is contained in:
Tom Tromey 2007-01-09 19:58:05 +00:00
parent c648dedbde
commit 97b8365caf
17478 changed files with 606493 additions and 100744 deletions

View file

@ -37,7 +37,7 @@ exception statement from your version. */
package java.math;
public class BigDecimal extends Number implements Comparable
public class BigDecimal extends Number implements Comparable<BigDecimal>
{
private BigInteger intVal;
private int scale;
@ -672,7 +672,38 @@ public class BigDecimal extends Number implements Comparable
{
return divide (val, scale, roundingMode);
}
/**
* Returns a BigDecimal whose value is (this / val), with the specified scale
* and rounding according to the RoundingMode
* @param val the divisor
* @param scale the scale of the BigDecimal returned
* @param roundingMode the rounding mode to use
* @return 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,
int scale, RoundingMode roundingMode)
{
return divide (val, scale, roundingMode.ordinal());
}
/**
* Returns a BigDecimal whose value is (this / val) rounded according to the
* RoundingMode
* @param val the divisor
* @param roundingMode the rounding mode to use
* @return 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 divide (BigDecimal val, RoundingMode roundingMode)
{
return divide (val, scale, roundingMode.ordinal());
}
public BigDecimal divide(BigDecimal val, int newScale, int roundingMode)
throws ArithmeticException, IllegalArgumentException
{
@ -823,12 +854,7 @@ public class BigDecimal extends Number implements Comparable
return this;
}
public int compareTo (Object obj)
{
return compareTo((BigDecimal) obj);
}
public int compareTo (BigDecimal val)
public int compareTo (BigDecimal val)
{
if (scale == val.scale)
return intVal.compareTo (val.intVal);
@ -973,7 +999,7 @@ public class BigDecimal extends Number implements Comparable
{
return round(mc);
}
/**
* Returns a BigDecimal which is this BigDecimal rounded according to the
* MathContext rounding settings.
@ -993,12 +1019,12 @@ public class BigDecimal extends Number implements Comparable
// Make a new BigDecimal which is the correct power of 10 to chop off
// the required number of digits and then call divide.
BigDecimal div = new BigDecimal(BigInteger.TEN.pow(numToChop));
BigDecimal rounded = divide(div, scale, 4);
BigDecimal rounded = divide(div, scale, mc.getRoundingMode().ordinal());
rounded.scale -= numToChop;
rounded.precision = mcPrecision;
return rounded;
}
/**
* Returns the precision of this BigDecimal (the number of digits in the
* unscaled value). The precision of a zero value is 1.
@ -1350,7 +1376,24 @@ public class BigDecimal extends Number implements Comparable
if( scale < 0 ) throw new ArithmeticException("Scale parameter < 0.");
return divide (ONE, scale, roundingMode);
}
/**
* Returns a BigDecimal whose value is the same as this BigDecimal but whose
* representation has a scale of <code>newScale</code>. If the scale is
* reduced then rounding may occur, according to the RoundingMode.
* @param newScale
* @param roundingMode
* @return a BigDecimal whose scale is as given, whose value is
* <code>this</code> with possible rounding
* @throws ArithmeticException if the rounding mode is UNNECESSARY but
* rounding is required
* @since 1.5
*/
public BigDecimal setScale(int newScale, RoundingMode roundingMode)
{
return setScale(newScale, roundingMode.ordinal());
}
/**
* Returns a new BigDecimal constructed from the BigDecimal(String)
* constructor using the Double.toString(double) method to obtain