2015-10-28 50 views
6

在Java中,從另一個bigDecimal.toString()總是等於新的BigDecimal? 例如是從另一個bigDecimal.toString()總是等於新的BigDecimal?

BigDecimal a = new BigDecimal("1.23"); 
    BigDecimal b = new BigDecimal(a.toString()); 

    System.out.println(a.compareTo(b) == 0); // always true? 

我知道BigDecimal爲不可變的,但我想知道如果有clone一個BigDecimal對象什麼好辦法?

+0

沒有太大的可能,你總是可以去一個淺拷貝雖然 – CrakC

+0

@CrakC你能舉一個淺拷貝的例子嗎? – andyf

+0

_if克隆一個BigDecimal對象有什麼好方法_你的意思只是從它的'toString()'表示** **嗎? –

回答

6

是的,你可以這樣認爲。從BigDecimal.toString文檔

如果字符串表示使用BigDecimal(String)構造轉換回BigDecimal ,則原始值 將被恢復。

但是您可以放心地共享相同的對象,因爲它是immutable和複印不需要

3

一個簡單的方法是添加ZERO

BigDecimal a = new BigDecimal("1.23"); 
BigDecimal b = a.add(BigDecimal.ZERO);