2009-05-28 19 views

risposta

40

È necessario creare un nuovo BigDecimal.

BigDecimal d = new BigDecimal(long); 
+1

Grazie, è facile e molto utile. – Ali

4

Non puoi lanciarlo. È tuttavia possibile creare un nuovo BigDecimal. È possibile ottenere un long da un Long utilizzando Long.getLongValue() se si dispone di Long non primitivo.

BigDecimal bigD = new BigDecimal(longVal); 
+0

Rammendo, troppo lento. – jjnguy

2

È necessario creare un nuovo oggetto BigDecimal

Long test = new Long (10); 
    BigDecimal bigD = new BigDecimal(test.longValue()); 
15

Per completezza si può usare:

// valueOf will return cached instances for values zero through to ten 
BigDecimal d = BigDecimal.valueOf(yourLong); 

0-10 è relativa implementazione Java 6, non è sicuro su precedente JDK di

+1

valueOf è preferito come per JavaDocs: "Questo" metodo factory statico "viene fornito preferibilmente a un costruttore (lungo) perché consente il riutilizzo dei valori BigDecimal utilizzati di frequente." –

11

Non si deve usare BigDecimal d = new BigDecimal (lunga); !!

L'implementazione in BigDecimal a lungo non è precisa. Per le applicazioni finanziarie questo è fondamentale!

Ma l'implementazione per l'argomento String è migliore! Quindi usare qualcosa come:

new BigDecimal(yourLong.toString()); 

C'era un discorso su http://www.parleys.com/ su questo.

+0

Mi rendo conto che è un po 'tardi, ma avete qualche link più diretto all'origine di questo reclamo, perché guardando il codice sorgente di BigDecimal in JDK7 sembra al massimo datato. –

+0

E 'passato un po' di tempo, tutto quello che ricordo è su Parley che hanno fatto questa richiesta, ma non riesco più a trovare il link. Forse in JDK7 questo è già ottimizzato. – Fico

Problemi correlati