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 VATは包括的ではありません:" + ewt); 「EWTVAT非包括的:0E-12」を出力し、finalEWTが0.00を返すため、他の方程式を台無しにします。

値の例として、amount = 1000、rateTaxが1.12、rateEWTが0.05であると仮定します。

通常の10進数形式で印刷する方法はありますか?データベースに回答を挿入するので、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」を参照してください

編集:opは実際には出力の別のフォーマットを求めているのではなく、計算をチェックしているため、答えは無効のようです。ごめんなさい。反対票を投じないでください。誤解でした。

于 2012-09-28T11:31:22.143 に答える