方程输出为十进制,不是科学记数法

时间:2012-09-28 11:19:02

标签: java bigdecimal

所以我有这段代码:

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 VAT不包括:”+ ewt); 打印出“EWT VAT not inclusive:0E-12”,搞乱了其他等式,因为finalEWT返回0.00

作为示例值, 假设数量= 1000,rateTax是1.12,rateEWT是0.05

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

2 个答案:

答案 0 :(得分:0)

是的,有一种名为BigDecimal.toPlainString()的方法:

  

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

答案 1 :(得分:0)

我建议使用String.format

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

格式化程序(“%f”)描述为here。参见“BigDecimal”部分

编辑:答案似乎无效,因为操作系统实际上并不是要求输出的另一种格式,而是用于检查计算。抱歉,那个。请不要downvote。这是一个误解。