2015-10-28 15 views
6

In Java, è un nuovo BigDecimal da un altro bigDecimal.toString() sempre uguale a? Per esempioè un nuovo BigDecimal da un altro bigDecimal.toString() equivale sempre?

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

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

So BigDecimal è immutabile, ma voglio sapere se c'è qualche buon modo per clone un oggetto BigDecimal?

+0

non molto probabile, si può sempre andare per una copia superficiale però – CrakC

+0

@CrakC potresti mostrare un esempio di copia superficiale? – andyf

+0

_se c'è un buon modo per clonare un oggetto BigDecimal_ Intendi solo ** dalla sua rappresentazione 'toString() **? –

risposta

6

Sì, si può supporre. Dai documenti BigDecimal.toString

Se tale rappresentazione stringa viene riconvertito in un BigDecimal utilizzando il costruttore BigDecimal(String), allora il valore originario sarà recuperato.

Tuttavia si può tranquillamente dividere lo stesso oggetto, perché è immutable e la copia non è richiesta

3

Un modo semplice sarebbe quella di aggiungere ZERO

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