2012-09-28 41 views
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不包括:0E-12,」 搞亂其他方程,因爲finalEWT返回0.00

作爲示例值, 假定量= 1000,rateTax是1.12,rateEWT是0.05

是否有一個方式打印出來的正常小數形式?我需要它仍然處於BigDecimal格式,因爲我將把答案插入數據庫。

+0

您似乎將問題中的實際表示與輸出格式混合在一起。你有哪個問題? – Keppil

回答

0

是的,有一個叫BigDecimal.toPlainString()方法:使用

返回此BigDecimal的字符串表示不帶指數字段...

+0

我試過了,但是不會將它解析爲字符串嗎?我需要它仍然在BigDecimal中。 – user1353252

+1

但是你沒有通過調用toPlainString()來改變實例。 – Fildor

+0

只需將您的打印語句更改爲'System.out.println(「Final EWT:」+ finalEWT.toPlainString());',您不會自己更改'BigDecimal'。 – Keppil

0

我建議String.format

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

格式器(「%f」)被描述爲here 。請參閱「BigDecimal」部分

編輯:答案似乎無效,因爲該操作系統實際上不是要求另一個格式的輸出,但用於檢查計算。對不起'回合。請不要低估。這是一個誤解。

相關問題