189 |
{ |
{ |
190 |
int exp = Integer.parseInt (num.substring (point)); |
int exp = Integer.parseInt (num.substring (point)); |
191 |
exp -= scale; |
exp -= scale; |
192 |
if (exp > 0) |
if (signum () == 0) |
193 |
|
scale = 0; |
194 |
|
else if (exp > 0) |
195 |
{ |
{ |
196 |
intVal = intVal.multiply (BigInteger.valueOf (10).pow (exp)); |
intVal = intVal.multiply (BigInteger.valueOf (10).pow (exp)); |
197 |
scale = 0; |
scale = 0; |
268 |
throw new ArithmeticException ("scale is negative: " + newScale); |
throw new ArithmeticException ("scale is negative: " + newScale); |
269 |
|
|
270 |
if (intVal.signum () == 0) // handle special case of 0.0/0.0 |
if (intVal.signum () == 0) // handle special case of 0.0/0.0 |
271 |
return ZERO; |
return newScale == 0 ? ZERO : new BigDecimal (ZERO.intVal, newScale); |
272 |
|
|
273 |
// Ensure that pow gets a non-negative value. |
// Ensure that pow gets a non-negative value. |
274 |
int valScale = val.scale; |
int valScale = val.scale; |