aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/java/math/BigDecimal.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/java/math/BigDecimal.java')
-rw-r--r--libjava/classpath/java/math/BigDecimal.java490
1 files changed, 245 insertions, 245 deletions
diff --git a/libjava/classpath/java/math/BigDecimal.java b/libjava/classpath/java/math/BigDecimal.java
index eceaf8c..7f4546c 100644
--- a/libjava/classpath/java/math/BigDecimal.java
+++ b/libjava/classpath/java/math/BigDecimal.java
@@ -7,7 +7,7 @@ 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
@@ -50,21 +50,21 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
* The constant zero as a BigDecimal with scale zero.
* @since 1.5
*/
- public static final BigDecimal ZERO =
+ public static final BigDecimal ZERO =
new BigDecimal (BigInteger.ZERO, 0);
/**
* The constant one as a BigDecimal with scale zero.
* @since 1.5
*/
- public static final BigDecimal ONE =
+ public static final BigDecimal ONE =
new BigDecimal (BigInteger.ONE, 0);
/**
* The constant ten as a BigDecimal with scale zero.
* @since 1.5
*/
- public static final BigDecimal TEN =
+ public static final BigDecimal TEN =
new BigDecimal (BigInteger.TEN, 0);
public static final int ROUND_UP = 0;
@@ -87,7 +87,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.intVal = BigInteger.valueOf(val);
this.scale = 0;
}
-
+
/**
* Constructs a BigDecimal using the BigDecimal(int) constructor and then
* rounds according to the MathContext.
@@ -106,9 +106,9 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.intVal = result.intVal;
this.scale = result.scale;
this.precision = result.precision;
- }
+ }
}
-
+
/**
* Constructs a new BigDecimal whose unscaled value is val and whose
* scale is zero.
@@ -119,7 +119,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.intVal = BigInteger.valueOf(val);
this.scale = 0;
}
-
+
/**
* Constructs a BigDecimal from the long in the same way as BigDecimal(long)
* and then rounds according to the MathContext.
@@ -138,12 +138,12 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.intVal = result.intVal;
this.scale = result.scale;
this.precision = result.precision;
- }
+ }
}
-
+
/**
- * 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
+ * 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.
* @param num the unscaledValue, before rounding
@@ -163,15 +163,15 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.precision = result.precision;
}
}
-
+
/**
* Constructs a BigDecimal from the String val according to the same
- * rules as the BigDecimal(String) constructor and then rounds
+ * rules as the BigDecimal(String) constructor and then rounds
* according to the MathContext mc.
* @param val the String from which we construct the initial BigDecimal
* @param mc the MathContext that specifies the rounding
* @throws ArithmeticException if the result is inexact but the rounding type
- * is RoundingMode.UNNECESSARY
+ * is RoundingMode.UNNECESSARY
* @since 1.5
*/
public BigDecimal (String val, MathContext mc)
@@ -185,13 +185,13 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.precision = result.precision;
}
}
-
+
/**
* Constructs a BigDecimal whose unscaled value is num and whose
* scale is zero.
* @param num the value of the new BigDecimal
*/
- public BigDecimal (BigInteger num)
+ public BigDecimal (BigInteger num)
{
this (num, 0);
}
@@ -207,9 +207,9 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.intVal = num;
this.scale = scale;
}
-
+
/**
- * Constructs a BigDecimal using the BigDecimal(BigInteger, int)
+ * Constructs a BigDecimal using the BigDecimal(BigInteger, int)
* constructor and then rounds according to the MathContext.
* @param num the unscaled value of the unrounded BigDecimal
* @param scale the scale of the unrounded BigDecimal
@@ -236,7 +236,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
* @param num the double from which the initial BigDecimal is created
* @param mc the MathContext that specifies the rounding behaviour
* @throws ArithmeticException if the result is inexact but the rounding type
- * is RoundingMode.UNNECESSARY
+ * is RoundingMode.UNNECESSARY
* @since 1.5
*/
public BigDecimal (double num, MathContext mc)
@@ -250,8 +250,8 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.precision = result.precision;
}
}
-
- public BigDecimal (double num) throws NumberFormatException
+
+ public BigDecimal (double num) throws NumberFormatException
{
if (Double.isInfinite (num) || Double.isNaN (num))
throw new NumberFormatException ("invalid argument: " + num);
@@ -282,37 +282,37 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
// Shave off factors of 10.
while (exponent < 0 && (mantissa & 1) == 0)
{
- ++exponent;
- mantissa >>= 1;
+ ++exponent;
+ mantissa >>= 1;
}
intVal = BigInteger.valueOf (bits < 0 ? - mantissa : mantissa);
if (exponent < 0)
{
- // We have MANTISSA * 2 ^ (EXPONENT).
- // Since (1/2)^N == 5^N * 10^-N we can easily convert this
- // into a power of 10.
- scale = (int) (- exponent);
- BigInteger mult = BigInteger.valueOf (5).pow (scale);
- intVal = intVal.multiply (mult);
+ // We have MANTISSA * 2 ^ (EXPONENT).
+ // Since (1/2)^N == 5^N * 10^-N we can easily convert this
+ // into a power of 10.
+ scale = (int) (- exponent);
+ BigInteger mult = BigInteger.valueOf (5).pow (scale);
+ intVal = intVal.multiply (mult);
}
else
{
- intVal = intVal.shiftLeft ((int) exponent);
- scale = 0;
+ intVal = intVal.shiftLeft ((int) exponent);
+ scale = 0;
}
}
/**
- * Constructs a BigDecimal from the char subarray and rounding
+ * Constructs a BigDecimal from the char subarray and rounding
* according to the MathContext.
* @param in the char array
* @param offset the start of the subarray
* @param len the length of the subarray
* @param mc the MathContext for rounding
- * @throws NumberFormatException if the char subarray is not a valid
+ * @throws NumberFormatException if the char subarray is not a valid
* BigDecimal representation
- * @throws ArithmeticException if the result is inexact but the rounding
+ * @throws ArithmeticException if the result is inexact but the rounding
* mode is RoundingMode.UNNECESSARY
* @since 1.5
*/
@@ -328,10 +328,10 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.precision = temp.precision;
}
}
-
+
/**
* Constructs a BigDecimal from the char array and rounding according
- * to the MathContext.
+ * to the MathContext.
* @param in the char array
* @param mc the MathContext
* @throws NumberFormatException if <code>in</code> is not a valid BigDecimal
@@ -350,9 +350,9 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
this.intVal = temp.intVal;
this.scale = temp.scale;
this.precision = temp.precision;
- }
+ }
}
-
+
/**
* Constructs a BigDecimal from the given char array, accepting the same
* sequence of characters as the BigDecimal(String) constructor.
@@ -365,10 +365,10 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
{
this(in, 0, in.length);
}
-
+
/**
* Constructs a BigDecimal from a char subarray, accepting the same sequence
- * of characters as the BigDecimal(String) constructor.
+ * of characters as the BigDecimal(String) constructor.
* @param in the char array
* @param offset the start of the subarray
* @param len the length of the subarray
@@ -385,12 +385,12 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
// point is the index into the char array where the exponent starts
// (or, if there is no exponent, this is equal to end)
int point = offset;
- // dot is the index into the char array where the decimal point is
+ // dot is the index into the char array where the decimal point is
// found, or -1 if there is no decimal point
int dot = -1;
-
+
// The following examples show what these variables mean. Note that
- // point and dot don't yet have the correct values, they will be
+ // point and dot don't yet have the correct values, they will be
// properly assigned in a loop later on in this method.
//
// Example 1
@@ -409,11 +409,11 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
//
// Example 3
//
- // - 1 2 3 4 5 e 7
+ // - 1 2 3 4 5 e 7
// __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
//
- // offset = 2, len = 8, start = 3, dot = -1, point = 8, end = 10
-
+ // offset = 2, len = 8, start = 3, dot = -1, point = 8, end = 10
+
// Determine the sign of the number.
boolean negative = false;
if (in[offset] == '+')
@@ -428,7 +428,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
negative = true;
}
- // Check each character looking for the decimal point and the
+ // Check each character looking for the decimal point and the
// start of the exponent.
while (point < end)
{
@@ -443,7 +443,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
// Break when we reach the start of the exponent.
else if (c == 'e' || c == 'E')
break;
- // Throw an exception if the character was not a decimal or an
+ // Throw an exception if the character was not a decimal or an
// exponent and is not a digit.
else if (!Character.isDigit(c))
throw new NumberFormatException("unrecognized character at " + point
@@ -456,7 +456,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
CPStringBuilder val = new CPStringBuilder(point - start - 1);
if (dot != -1)
{
- // If there was a decimal we must combine the two parts that
+ // If there was a decimal we must combine the two parts that
// contain only digits and we must set the scale properly.
val.append(in, start, dot - start);
val.append(in, dot + 1, point - dot - 1);
@@ -494,7 +494,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
try
{
- // Adjust the scale according to the exponent.
+ // Adjust the scale according to the exponent.
// Remember that the value of a BigDecimal is
// unscaledValue x Math.pow(10, -scale)
scale -= Integer.parseInt(new String(in, point, end - point));
@@ -505,8 +505,8 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
}
}
}
-
- public BigDecimal (String num) throws NumberFormatException
+
+ public BigDecimal (String num) throws NumberFormatException
{
int len = num.length();
int start = 0, point = 0;
@@ -514,42 +514,42 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
boolean negative = false;
if (num.charAt(0) == '+')
{
- ++start;
- ++point;
+ ++start;
+ ++point;
}
else if (num.charAt(0) == '-')
{
- ++start;
- ++point;
- negative = true;
+ ++start;
+ ++point;
+ negative = true;
}
while (point < len)
{
- char c = num.charAt (point);
- if (c == '.')
- {
- if (dot >= 0)
- throw new NumberFormatException ("multiple `.'s in number");
- dot = point;
- }
- else if (c == 'e' || c == 'E')
- break;
- else if (Character.digit (c, 10) < 0)
- throw new NumberFormatException ("unrecognized character: " + c);
- ++point;
+ char c = num.charAt (point);
+ if (c == '.')
+ {
+ if (dot >= 0)
+ throw new NumberFormatException ("multiple `.'s in number");
+ dot = point;
+ }
+ else if (c == 'e' || c == 'E')
+ break;
+ else if (Character.digit (c, 10) < 0)
+ throw new NumberFormatException ("unrecognized character: " + c);
+ ++point;
}
String val;
if (dot >= 0)
{
- val = num.substring (start, dot) + num.substring (dot + 1, point);
- scale = point - 1 - dot;
+ val = num.substring (start, dot) + num.substring (dot + 1, point);
+ scale = point - 1 - dot;
}
else
{
- val = num.substring (start, point);
- scale = 0;
+ val = num.substring (start, point);
+ scale = 0;
}
if (val.length () == 0)
throw new NumberFormatException ("no digits seen");
@@ -567,39 +567,39 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
if (point >= len )
throw new NumberFormatException ("no exponent following e or E");
-
- try
- {
+
+ try
+ {
scale -= Integer.parseInt (num.substring (point));
- }
- catch (NumberFormatException ex)
- {
- throw new NumberFormatException ("malformed exponent");
- }
+ }
+ catch (NumberFormatException ex)
+ {
+ throw new NumberFormatException ("malformed exponent");
+ }
}
}
- public static BigDecimal valueOf (long val)
+ public static BigDecimal valueOf (long val)
{
return valueOf (val, 0);
}
- public static BigDecimal valueOf (long val, int scale)
- throws NumberFormatException
+ public static BigDecimal valueOf (long val, int scale)
+ throws NumberFormatException
{
if ((scale == 0) && ((int)val == val))
switch ((int) val)
- {
- case 0:
- return ZERO;
- case 1:
- return ONE;
- }
+ {
+ case 0:
+ return ZERO;
+ case 1:
+ return ONE;
+ }
return new BigDecimal (BigInteger.valueOf (val), scale);
}
- public BigDecimal add (BigDecimal val)
+ public BigDecimal add (BigDecimal val)
{
// For addition, need to line up decimals. Note that the movePointRight
// method cannot be used for this as it might return a BigDecimal with
@@ -613,9 +613,9 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
return new BigDecimal (op1.add (op2), Math.max (scale, val.scale));
}
-
+
/**
- * Returns a BigDecimal whose value is found first by calling the
+ * Returns a BigDecimal whose value is found first by calling the
* method add(val) and then by rounding according to the MathContext mc.
* @param val the augend
* @param mc the MathContext for rounding
@@ -629,13 +629,13 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
return add(val).round(mc);
}
- public BigDecimal subtract (BigDecimal val)
+ public BigDecimal subtract (BigDecimal val)
{
return this.add(val.negate());
}
/**
- * Returns a BigDecimal whose value is found first by calling the
+ * Returns a BigDecimal whose value is found first by calling the
* method subtract(val) and then by rounding according to the MathContext mc.
* @param val the subtrahend
* @param mc the MathContext for rounding
@@ -649,14 +649,14 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
return subtract(val).round(mc);
}
- public BigDecimal multiply (BigDecimal val)
+ public BigDecimal multiply (BigDecimal val)
{
return new BigDecimal (intVal.multiply (val.intVal), scale + val.scale);
}
-
+
/**
* Returns a BigDecimal whose value is (this x val) before it is rounded
- * according to the MathContext mc.
+ * according to the MathContext mc.
* @param val the multiplicand
* @param mc the MathContext for rounding
* @return a new BigDecimal with value approximately (this x val)
@@ -669,15 +669,15 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
return multiply(val).round(mc);
}
- public BigDecimal divide (BigDecimal val, int roundingMode)
- throws ArithmeticException, IllegalArgumentException
+ public BigDecimal divide (BigDecimal val, int roundingMode)
+ throws ArithmeticException, IllegalArgumentException
{
return divide (val, scale, roundingMode);
}
-
+
/**
* Returns a BigDecimal whose value is (this / val), with the specified scale
- * and rounding according to the RoundingMode
+ * 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
@@ -686,7 +686,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
* UNNECESSARY but the specified scale cannot represent the value exactly
* @since 1.5
*/
- public BigDecimal divide(BigDecimal val,
+ public BigDecimal divide(BigDecimal val,
int scale, RoundingMode roundingMode)
{
return divide (val, scale, roundingMode.ordinal());
@@ -705,30 +705,30 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
{
return divide (val, scale, roundingMode.ordinal());
}
-
+
public BigDecimal divide(BigDecimal val, int newScale, int roundingMode)
- throws ArithmeticException, IllegalArgumentException
+ throws ArithmeticException, IllegalArgumentException
{
if (roundingMode < 0 || roundingMode > 7)
- throw
- new IllegalArgumentException("illegal rounding mode: " + roundingMode);
+ throw
+ new IllegalArgumentException("illegal rounding mode: " + roundingMode);
- if (intVal.signum () == 0) // handle special case of 0.0/0.0
+ if (intVal.signum () == 0) // handle special case of 0.0/0.0
return newScale == 0 ? ZERO : new BigDecimal (ZERO.intVal, newScale);
-
+
// Ensure that pow gets a non-negative value.
BigInteger valIntVal = val.intVal;
int power = newScale - (scale - val.scale);
if (power < 0)
{
- // Effectively increase the scale of val to avoid an
- // ArithmeticException for a negative power.
+ // Effectively increase the scale of val to avoid an
+ // ArithmeticException for a negative power.
valIntVal = valIntVal.multiply (BigInteger.TEN.pow (-power));
- power = 0;
+ power = 0;
}
BigInteger dividend = intVal.multiply (BigInteger.TEN.pow (power));
-
+
BigInteger parts[] = dividend.divideAndRemainder (valIntVal);
BigInteger unrounded = parts[0];
@@ -746,33 +746,33 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
roundingMode = (sign < 0) ? ROUND_UP : ROUND_DOWN;
else
{
- // half is -1 if remainder*2 < positive intValue (*power), 0 if equal,
- // 1 if >. This implies that the remainder to round is less than,
- // equal to, or greater than half way to the next digit.
- BigInteger posRemainder
- = parts[1].signum () < 0 ? parts[1].negate() : parts[1];
- valIntVal = valIntVal.signum () < 0 ? valIntVal.negate () : valIntVal;
- int half = posRemainder.shiftLeft(1).compareTo(valIntVal);
-
- switch(roundingMode)
- {
- case ROUND_HALF_UP:
- roundingMode = (half < 0) ? ROUND_DOWN : ROUND_UP;
- break;
- case ROUND_HALF_DOWN:
- roundingMode = (half > 0) ? ROUND_UP : ROUND_DOWN;
- break;
- case ROUND_HALF_EVEN:
- if (half < 0)
- roundingMode = ROUND_DOWN;
- else if (half > 0)
- roundingMode = ROUND_UP;
- else if (unrounded.testBit(0)) // odd, then ROUND_HALF_UP
- roundingMode = ROUND_UP;
- else // even, ROUND_HALF_DOWN
- roundingMode = ROUND_DOWN;
- break;
- }
+ // half is -1 if remainder*2 < positive intValue (*power), 0 if equal,
+ // 1 if >. This implies that the remainder to round is less than,
+ // equal to, or greater than half way to the next digit.
+ BigInteger posRemainder
+ = parts[1].signum () < 0 ? parts[1].negate() : parts[1];
+ valIntVal = valIntVal.signum () < 0 ? valIntVal.negate () : valIntVal;
+ int half = posRemainder.shiftLeft(1).compareTo(valIntVal);
+
+ switch(roundingMode)
+ {
+ case ROUND_HALF_UP:
+ roundingMode = (half < 0) ? ROUND_DOWN : ROUND_UP;
+ break;
+ case ROUND_HALF_DOWN:
+ roundingMode = (half > 0) ? ROUND_UP : ROUND_DOWN;
+ break;
+ case ROUND_HALF_EVEN:
+ if (half < 0)
+ roundingMode = ROUND_DOWN;
+ else if (half > 0)
+ roundingMode = ROUND_UP;
+ else if (unrounded.testBit(0)) // odd, then ROUND_HALF_UP
+ roundingMode = ROUND_UP;
+ else // even, ROUND_HALF_DOWN
+ roundingMode = ROUND_DOWN;
+ break;
+ }
}
if (roundingMode == ROUND_UP)
@@ -781,24 +781,24 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
// roundingMode == ROUND_DOWN
return new BigDecimal (unrounded, newScale);
}
-
+
/**
* Performs division, if the resulting quotient requires rounding
- * (has a nonterminating decimal expansion),
- * an ArithmeticException is thrown.
+ * (has a nonterminating decimal expansion),
+ * an ArithmeticException is thrown.
* #see divide(BigDecimal, int, int)
* @since 1.5
*/
public BigDecimal divide(BigDecimal divisor)
- throws ArithmeticException, IllegalArgumentException
+ throws ArithmeticException, IllegalArgumentException
{
return divide(divisor, scale, ROUND_UNNECESSARY);
}
/**
* Returns a BigDecimal whose value is the remainder in the quotient
- * this / val. This is obtained by
- * subtract(divideToIntegralValue(val).multiply(val)).
+ * this / val. This is obtained by
+ * subtract(divideToIntegralValue(val).multiply(val)).
* @param val the divisor
* @return a BigDecimal whose value is the remainder
* @throws ArithmeticException if val == 0
@@ -811,7 +811,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
/**
* 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
+ * of this / val, and the second element of which is the remainder of
* that quotient.
* @param val the divisor
* @return the above described BigDecimal array
@@ -825,9 +825,9 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
result[1] = subtract(result[0].multiply(val));
return result;
}
-
+
/**
- * Returns a BigDecimal whose value is the integer part of the quotient
+ * Returns a BigDecimal whose value is the integer part of the quotient
* this / val. The preferred scale is this.scale - val.scale.
* @param val the divisor
* @return a BigDecimal whose value is the integer part of this / val.
@@ -838,12 +838,12 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
{
return divide(val, ROUND_DOWN).floor().setScale(scale - val.scale, ROUND_DOWN);
}
-
+
/**
- * Mutates this BigDecimal into one with no fractional part, whose value is
+ * Mutates this BigDecimal into one with no fractional part, whose value is
* equal to the largest integer that is <= to this BigDecimal. Note that
* since this method is private it is okay to mutate this BigDecimal.
- * @return the BigDecimal obtained through the floor operation on this
+ * @return the BigDecimal obtained through the floor operation on this
* BigDecimal.
*/
private BigDecimal floor()
@@ -855,17 +855,17 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
intVal = new BigInteger(intValStr).multiply(BigInteger.TEN.pow(scale));
return this;
}
-
- public int compareTo (BigDecimal val)
+
+ public int compareTo (BigDecimal val)
{
if (scale == val.scale)
return intVal.compareTo (val.intVal);
- BigInteger thisParts[] =
+ BigInteger thisParts[] =
intVal.divideAndRemainder (BigInteger.TEN.pow (scale));
BigInteger valParts[] =
val.intVal.divideAndRemainder (BigInteger.TEN.pow (val.scale));
-
+
int compare;
if ((compare = thisParts[0].compareTo (valParts[0])) != 0)
return compare;
@@ -875,46 +875,46 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
// Add some trailing zeros to the remainder with the smallest scale
if (scale < val.scale)
thisParts[1] = thisParts[1].multiply
- (BigInteger.valueOf (10).pow (val.scale - scale));
+ (BigInteger.valueOf (10).pow (val.scale - scale));
else if (scale > val.scale)
valParts[1] = valParts[1].multiply
- (BigInteger.valueOf (10).pow (scale - val.scale));
+ (BigInteger.valueOf (10).pow (scale - val.scale));
// and compare them
return thisParts[1].compareTo (valParts[1]);
}
- public boolean equals (Object o)
+ public boolean equals (Object o)
{
- return (o instanceof BigDecimal
- && scale == ((BigDecimal) o).scale
- && compareTo ((BigDecimal) o) == 0);
+ return (o instanceof BigDecimal
+ && scale == ((BigDecimal) o).scale
+ && compareTo ((BigDecimal) o) == 0);
}
- public int hashCode()
+ public int hashCode()
{
return intValue() ^ scale;
}
public BigDecimal max (BigDecimal val)
{
- switch (compareTo (val))
+ switch (compareTo (val))
{
case 1:
- return this;
+ return this;
default:
- return val;
+ return val;
}
}
- public BigDecimal min (BigDecimal val)
+ public BigDecimal min (BigDecimal val)
{
- switch (compareTo (val))
+ switch (compareTo (val))
{
case -1:
- return this;
+ return this;
default:
- return val;
+ return val;
}
}
@@ -931,35 +931,35 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
if (scale >= n)
return new BigDecimal (intVal, scale - n);
- return new BigDecimal (intVal.multiply
- (BigInteger.TEN.pow (n - scale)), 0);
+ return new BigDecimal (intVal.multiply
+ (BigInteger.TEN.pow (n - scale)), 0);
}
- public int signum ()
+ public int signum ()
{
return intVal.signum ();
}
- public int scale ()
+ public int scale ()
{
return scale;
}
-
+
public BigInteger unscaledValue()
{
return intVal;
}
- public BigDecimal abs ()
+ public BigDecimal abs ()
{
return new BigDecimal (intVal.abs (), scale);
}
- public BigDecimal negate ()
+ public BigDecimal negate ()
{
return new BigDecimal (intVal.negate (), scale);
}
-
+
/**
* Returns a BigDecimal whose value is found first by negating this via
* the negate() method, then by rounding according to the MathContext mc.
@@ -976,9 +976,9 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
result = result.round(mc);
return result;
}
-
+
/**
- * Returns this BigDecimal. This is included for symmetry with the
+ * Returns this BigDecimal. This is included for symmetry with the
* method negate().
* @return this
* @since 1.5
@@ -987,9 +987,9 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
{
return this;
}
-
+
/**
- * Returns a BigDecimal whose value is found by rounding <code>this</code>
+ * Returns a BigDecimal whose value is found by rounding <code>this</code>
* according to the MathContext. This is the same as round(MathContext).
* @param mc the MathContext for rounding
* @return a BigDecimal whose value is <code>this</code> before being rounded
@@ -1001,7 +1001,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
{
return round(mc);
}
-
+
/**
* Returns a BigDecimal which is this BigDecimal rounded according to the
* MathContext rounding settings.
@@ -1012,12 +1012,12 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
{
int mcPrecision = mc.getPrecision();
int numToChop = precision() - mcPrecision;
- // If mc specifies not to chop any digits or if we've already chopped
+ // If mc specifies not to chop any digits or if we've already chopped
// enough digits (say by using a MathContext in the constructor for this
// BigDecimal) then just return this.
if (mcPrecision == 0 || numToChop <= 0)
return this;
-
+
// 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));
@@ -1026,38 +1026,38 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
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.
- * @return the number of digits in the unscaled value, or 1 if the value
+ * @return the number of digits in the unscaled value, or 1 if the value
* is zero.
*/
public int precision()
{
if (precision == 0)
{
- String s = intVal.toString();
- precision = s.length() - (( s.charAt(0) == '-' ) ? 1 : 0);
+ String s = intVal.toString();
+ precision = s.length() - (( s.charAt(0) == '-' ) ? 1 : 0);
}
return precision;
}
-
+
/**
* 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
* <code>scale == 0<code> is returned.
* 2. an <code>int adjExp</code> is created which is equal to the negation
- * of <code>scale</code> plus the number of digits in the unscaled value,
+ * of <code>scale</code> plus the number of digits in the unscaled value,
* minus one.
- * 3. if <code>scale >= 0 && adjExp >= -6</code> then we represent this
- * BigDecimal without scientific notation. A decimal is added if the
+ * 3. if <code>scale >= 0 && adjExp >= -6</code> 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
+ * 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.
*/
@@ -1076,7 +1076,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
if (scale >= 0 && (point - 1) >= -6)
{
- // Convert to character form without scientific notation.
+ // Convert to character form without scientific notation.
if (point <= 0)
{
// Zeros need to be prepended to the StringBuilder.
@@ -1094,7 +1094,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
}
else
{
- // No zeros need to be prepended so the String is simply the
+ // No zeros need to be prepended so the String is simply the
// unscaled value with the decimal point inserted.
val.append(bigStr);
val.insert(point + (negative ? 1 : 0), '.');
@@ -1104,7 +1104,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
{
// We must use scientific notation to represent this BigDecimal.
val.append(bigStr);
- // If there is more than one digit in the unscaled value we put a
+ // If there is more than one digit in the unscaled value we put a
// decimal after the first digit.
if (bigStr.length() > 1)
val.insert( ( negative ? 2 : 1 ), '.');
@@ -1119,10 +1119,10 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
/**
* Returns the String representation of this BigDecimal, using engineering
- * notation if necessary. This is similar to toString() but when exponents
+ * 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.
- *
+ *
* @return a String representation of this BigDecimal in engineering notation
* @since 1.5
*/
@@ -1161,7 +1161,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
}
else
{
- // No zeros need to be prepended so the String is simply the
+ // No zeros need to be prepended so the String is simply the
// unscaled value with the decimal point inserted.
val.append(bigStr);
val.insert(point + (negative ? 1 : 0), '.');
@@ -1172,7 +1172,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
// We must use scientific notation to represent this BigDecimal.
// The exponent must be a multiple of 3 and the integer part
// must be between 1 and 999.
- val.append(bigStr);
+ val.append(bigStr);
int zeros = adjExp % 3;
int dot = 1;
if (adjExp > 0)
@@ -1185,9 +1185,9 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
else
{
// If the exponent is negative then we move the dot to the right
- // and decrease the exponent (increase its magnitude) until
+ // and decrease the exponent (increase its magnitude) until
// it is a multiple of 3. Note that this is not adjExp -= zeros
- // because the mod operator doesn't give us the distance to the
+ // because the mod operator doesn't give us the distance to the
// correct multiple of 3. (-5 mod 3) is -2 but the distance from
// -5 to the correct multiple of 3 (-6) is 1, not 2.
if (zeros == -2)
@@ -1211,7 +1211,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
}
else if (bigStr.length() > dot)
val.insert(dot + (negative ? 1 : 0), '.');
-
+
// And then append 'E' and the exponent (adjExp).
val.append('E');
if (adjExp >= 0)
@@ -1220,20 +1220,20 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
}
return val.toString();
}
-
+
/**
- * Returns a String representation of this BigDecimal without using
+ * 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
+ * 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.
* @return a String representation of this BigDecimal
* @since 1.5
*/
public String toPlainString()
{
- // If the scale is zero we simply return the String representation of the
+ // If the scale is zero we simply return the String representation of the
// unscaled value.
String bigStr = intVal.toString();
if (scale == 0)
@@ -1245,7 +1245,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
int point = bigStr.length() - scale - (negative ? 1 : 0);
CPStringBuilder sb = new CPStringBuilder(bigStr.length() + 2
- + (point <= 0 ? (-point + 1) : 0));
+ + (point <= 0 ? (-point + 1) : 0));
if (point <= 0)
{
// We have to prepend zeros and a decimal point.
@@ -1275,13 +1275,13 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
}
return sb.toString();
}
-
+
/**
* Converts this BigDecimal to a BigInteger. Any fractional part will
* be discarded.
* @return a BigDecimal whose value is equal to floor[this]
*/
- public BigInteger toBigInteger ()
+ public BigInteger toBigInteger ()
{
// If scale > 0 then we must divide, if scale > 0 then we must multiply,
// and if scale is zero then we just return intVal;
@@ -1291,9 +1291,9 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
return intVal.multiply(BigInteger.TEN.pow(-scale));
return intVal;
}
-
+
/**
- * Converts this BigDecimal into a BigInteger, throwing an
+ * Converts this BigDecimal into a BigInteger, throwing an
* ArithmeticException if the conversion is not exact.
* @return a BigInteger whose value is equal to the value of this BigDecimal
* @since 1.5
@@ -1303,7 +1303,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
if (scale > 0)
{
// If we have to divide, we must check if the result is exact.
- BigInteger[] result =
+ BigInteger[] result =
intVal.divideAndRemainder(BigInteger.TEN.pow(scale));
if (result[1].equals(BigInteger.ZERO))
return result[0];
@@ -1316,20 +1316,20 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
return intVal;
}
- public int intValue ()
+ public int intValue ()
{
return toBigInteger ().intValue ();
}
-
+
/**
- * Returns a BigDecimal which is numerically equal to this BigDecimal but
- * with no trailing zeros in the representation. For example, if this
+ * 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
+ * a BigDecimal with [unscaledValue, scale] = [6313, 1]. As another
* example, [12400, -2] would become [124, -4].
* @return a numerically equal BigDecimal with no trailing zeros
*/
- public BigDecimal stripTrailingZeros()
+ public BigDecimal stripTrailingZeros()
{
String intValStr = intVal.toString();
int newScale = scale;
@@ -1344,7 +1344,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
}
// Create a new BigDecimal with the appropriate substring and then
// set its scale.
- BigDecimal result = new BigDecimal(intValStr.substring(0, pointer + 1));
+ BigDecimal result = new BigDecimal(intValStr.substring(0, pointer + 1));
result.scale = newScale;
return result;
}
@@ -1354,12 +1354,12 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
return toBigInteger().longValue();
}
- public float floatValue()
+ public float floatValue()
{
return Float.valueOf(toString()).floatValue();
}
- public double doubleValue()
+ public double doubleValue()
{
return Double.valueOf(toString()).doubleValue();
}
@@ -1378,26 +1378,26 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
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
+ * @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
+ * @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)
+ * Returns a new BigDecimal constructed from the BigDecimal(String)
* constructor using the Double.toString(double) method to obtain
* the String.
* @param val the double value used in Double.toString(double)
@@ -1411,10 +1411,10 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
throw new NumberFormatException("argument cannot be NaN or infinite.");
return new BigDecimal(Double.toString(val));
}
-
+
/**
* Returns a BigDecimal whose numerical value is the numerical value
- * of this BigDecimal multiplied by 10 to the power of <code>n</code>.
+ * of this BigDecimal multiplied by 10 to the power of <code>n</code>.
* @param n the power of ten
* @return the new BigDecimal
* @since 1.5
@@ -1425,10 +1425,10 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
result.precision = precision;
return result;
}
-
+
/**
- * Returns a BigDecimal whose value is <code>this</code> to the power of
- * <code>n</code>.
+ * Returns a BigDecimal whose value is <code>this</code> to the power of
+ * <code>n</code>.
* @param n the power
* @return the new BigDecimal
* @since 1.5
@@ -1440,7 +1440,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
BigDecimal result = new BigDecimal(intVal.pow(n), scale * n);
return result;
}
-
+
/**
* Returns a BigDecimal whose value is determined by first calling pow(n)
* and then by rounding according to the MathContext mc.
@@ -1457,7 +1457,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
// currently do not.
return pow(n).round(mc);
}
-
+
/**
* Returns a BigDecimal whose value is the absolute value of this BigDecimal
* with rounding according to the given MathContext.
@@ -1470,7 +1470,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
result = result.round(mc);
return result;
}
-
+
/**
* Returns the size of a unit in the last place of this BigDecimal. This
* returns a BigDecimal with [unscaledValue, scale] = [1, this.scale()].
@@ -1481,7 +1481,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
{
return new BigDecimal(BigInteger.ONE, scale);
}
-
+
/**
* Converts this BigDecimal to a long value.
* @return the long value
@@ -1499,10 +1499,10 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
|| (result < 0 && signum() == 1) || (result > 0 && signum() == -1))
throw new ArithmeticException("this BigDecimal is too " +
"large to fit into the return type");
-
+
return intVal.longValue();
}
-
+
/**
* Converts this BigDecimal into an int by first calling longValueExact
* and then checking that the <code>long</code> returned from that
@@ -1520,7 +1520,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
throw new ArithmeticException ("this BigDecimal cannot fit into an int");
return result;
}
-
+
/**
* Converts this BigDecimal into a byte by first calling longValueExact
* and then checking that the <code>long</code> returned from that
@@ -1538,7 +1538,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal>
throw new ArithmeticException ("this BigDecimal cannot fit into a byte");
return result;
}
-
+
/**
* Converts this BigDecimal into a short by first calling longValueExact
* and then checking that the <code>long</code> returned from that