2014-01-16 47 views
0
public class Dummy { 

    public static void main(String args[]) { 
     String x = "1.234.567,89 EUR"; 
     String e = " EUR"; 

     List<BigDecimal> totals = new ArrayList<BigDecimal>(); 
     totals.add(new BigDecimal(x.replaceAll(" EUR","").replaceAll("\\.","").replaceAll(",","."))); 
     System.out.println(totals.get(0).add(new BigDecimal(0.10).setScale(3,0))); 
    } 
} 

隨着當前的代碼,我得到1234567.991並將其設置爲setScale(2,0)我得到1234568.00我所尋找的是1234567.99。任何幫助?如何使用BigDecimal的setScale獲得兩位數精密

回答

1

使用

System.out.println(totals.get(0).add(new BigDecimal(0.10) 
            .setScale(2, BigDecimal.ROUND_HALF_UP))); 

出把

1234567.99 
0

我認爲必須有一個內置的Java函數這一點。但除此之外,你可以用簡單的數學來做到這一點。

您可以將數字乘以100.然後使用Java的上限或下限函數。然後用100分。你得到了你想要的結果。

0

不要使用

new BigDecimal(0.10) 

這既是inprecise,不給的2 精度/規模,但使用

new BigDecimal("0.10") 

這保留的規模。

0

這將給出所需的輸出。

如果您想在當時使用double,我們可以使用DecimalFormat,但是在大數字setScale中使用。

BigDecimal.valueOf(1234567.991).setScale(2, BigDecimal.ROUND_HALF_UP) 
.doubleValue(); 

輸出

1234567.99 
相關問題