提交 de411b63 编写于 作者: B bpb

6480539: BigDecimal.stripTrailingZeros() has no effect on zero itself ("0.0")

Summary: Make stripTrailingZeros() return BigDecimal.ZERO if the BigDecimal is numerically equal to zero.
Reviewed-by: darcy
Contributed-by: NBrian Burkhalter <brian.burkhalter@oracle.com>
上级 43686c6c
......@@ -2592,14 +2592,18 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> {
* the {@code BigDecimal} value {@code 600.0}, which has
* [{@code BigInteger}, {@code scale}] components equals to
* [6000, 1], yields {@code 6E2} with [{@code BigInteger},
* {@code scale}] components equals to [6, -2]
* {@code scale}] components equals to [6, -2]. If
* this BigDecimal is numerically equal to zero, then
* {@code BigDecimal.ZERO} is returned.
*
* @return a numerically equal {@code BigDecimal} with any
* trailing zeros removed.
* @since 1.5
*/
public BigDecimal stripTrailingZeros() {
if(intCompact!=INFLATED) {
if (intCompact == 0 || (intVal != null && intVal.signum() == 0)) {
return BigDecimal.ZERO;
} else if (intCompact != INFLATED) {
return createAndStripZerosToMatchScale(intCompact, scale, Long.MIN_VALUE);
} else {
return createAndStripZerosToMatchScale(intVal, scale, Long.MIN_VALUE);
......
......@@ -45,8 +45,17 @@ public class StrippingZerosTest {
{new BigDecimal("1234.56780"), new BigDecimal("1234.5678")},
{new BigDecimal("1234.567800000"), new BigDecimal("1234.5678")},
{new BigDecimal("0"), new BigDecimal("0")},
{new BigDecimal("0e100"), new BigDecimal("0e100")},
{new BigDecimal("0e-100"), new BigDecimal("0e-100")},
{new BigDecimal("0e2"), BigDecimal.ZERO},
{new BigDecimal("0e-2"), BigDecimal.ZERO},
{new BigDecimal("0e42"), BigDecimal.ZERO},
{new BigDecimal("+0e42"), BigDecimal.ZERO},
{new BigDecimal("-0e42"), BigDecimal.ZERO},
{new BigDecimal("0e-42"), BigDecimal.ZERO},
{new BigDecimal("+0e-42"), BigDecimal.ZERO},
{new BigDecimal("-0e-42"), BigDecimal.ZERO},
{new BigDecimal("0e-2"), BigDecimal.ZERO},
{new BigDecimal("0e100"), BigDecimal.ZERO},
{new BigDecimal("0e-100"), BigDecimal.ZERO},
{new BigDecimal("10"), new BigDecimal("1e1")},
{new BigDecimal("20"), new BigDecimal("2e1")},
{new BigDecimal("100"), new BigDecimal("1e2")},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册