0

所以我有这个代码:

public BigDecimal calculateEWT (BigDecimal amount, boolean vatInclusive, int scale)
{       
    if (isZeroTax())
        return Env.ZERO;

    BigDecimal rateTax = getRate().divide(ONEHUNDRED, 12, BigDecimal.ROUND_HALF_UP);
    BigDecimal rateEWT = getcus_tax_EWTRate().divide(ONEHUNDRED, 12, BigDecimal.ROUND_HALF_UP);
    rateTax = rateTax.add(Env.ONE);

    BigDecimal ewt = null;
    if (!vatInclusive) {
        BigDecimal base = amount.divide(rateTax, 12, BigDecimal.ROUND_HALF_UP);
        ewt = base.multiply(rateEWT);
        System.out.println("EWT VAT not inclusive: " + ewt);
    } else {
        BigDecimal base = amount.multiply (rateTax);
        ewt = base.multiply(rateEWT);
        System.out.println("EWT VAT inclusive: " + ewt);
    }
    BigDecimal finalEWT = ewt.setScale(scale, BigDecimal.ROUND_HALF_UP);
    System.out.println("Final EWT: " + finalEWT);
    return finalEWT;
}

而 System.out.println("EWT 不含增值税:" + ewt); 打印出“EWT VAT not inclusive: 0E-12”,因为 finalEWT 返回 0.00 而弄乱了其他方程

作为示例值,假设金额 = 1000,rateTax 为 1.12,rateEWT 为 0.05

有没有办法以正常的十进制形式打印出来?我需要它仍然是 BigDecimal 格式,因为我会将答案插入数据库。

4

2 回答 2

0

是的,有一个方法叫做BigDecimal.toPlainString()

返回此 BigDecimal 的字符串表示形式,不带指数字段...

于 2012-09-28T11:21:50.933 回答
0

我建议使用String.format

System.out.println(String.format("EWT VAT not inclusive: %f", ewt));

此处描述了格式化程序(“%f”)。请参阅“BigDecimal”部分

编辑:答案似乎无效,因为操作实际上不是要求输出的另一种格式,而是检查计算。对不起。请不要投反对票。这是一个误会。

于 2012-09-28T11:31:22.143 回答