BigDecimal.java (BigDecimal(String)): Always set scale to zero when there is an exponent and the significant is zero.

* java/math/BigDecimal.java (BigDecimal(String)): Always set scale to
       zero when there is an exponent and the significant is zero.
       (divide): Always set scale to newScale even in special ZERO case.

From-SVN: r62908
This commit is contained in:
Mark Wielaard 2003-02-14 18:48:50 +00:00 committed by Mark Wielaard
parent 6017c7192b
commit ce5b5a5e54
2 changed files with 10 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2003-02-14 Mark Wielaard <mark@klomp.org>
* java/math/BigDecimal.java (BigDecimal(String)): Always set scale to
zero when there is an exponent and the significant is zero.
(divide): Always set scale to newScale even in special ZERO case.
2003-02-14 Tom Tromey <tromey@redhat.com>
* java/lang/System.java (properties): Use Properties.clone.

View File

@ -189,7 +189,9 @@ public class BigDecimal extends Number implements Comparable
{
int exp = Integer.parseInt (num.substring (point));
exp -= scale;
if (exp > 0)
if (signum () == 0)
scale = 0;
else if (exp > 0)
{
intVal = intVal.multiply (BigInteger.valueOf (10).pow (exp));
scale = 0;
@ -266,7 +268,7 @@ public class BigDecimal extends Number implements Comparable
throw new ArithmeticException ("scale is negative: " + newScale);
if (intVal.signum () == 0) // handle special case of 0.0/0.0
return ZERO;
return newScale == 0 ? ZERO : new BigDecimal (ZERO.intVal, newScale);
// Ensure that pow gets a non-negative value.
int valScale = val.scale;