所以我有这段代码:
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格式,因为我将插入数据库的答案。
答案 0 :(得分:0)
是的,有一种名为BigDecimal.toPlainString()
的方法:
返回此BigDecimal的字符串表示形式,不带指数字段...
答案 1 :(得分:0)
我建议使用String.format
System.out.println(String.format("EWT VAT not inclusive: %f", ewt));
格式化程序(“%f”)描述为here。参见“BigDecimal”部分
编辑:答案似乎无效,因为操作系统实际上并不是要求输出的另一种格式,而是用于检查计算。抱歉,那个。请不要downvote。这是一个误解。