2009-05-28 38 views
25

¿Cómo puedo convertir Long en BigDecimal?cast Long a BigDecimal

+6

No puede transmitir una a la otra. No son subclases de una superclase común. –

Respuesta

40

Deberá crear una nueva BigDecimal.

BigDecimal d = new BigDecimal(long); 
+1

Gracias, eso es fácil y muy útil. – Ali

4

No lo puedes transmitir. Sin embargo, puedes crear un nuevo BigDecimal. Puede obtener un long de Long usando Long.getLongValue() si tiene el Long no primitivo.

BigDecimal bigD = new BigDecimal(longVal); 
+0

Maldito, demasiado lento. – jjnguy

2

Es necesario crear un nuevo objeto BigDecimal

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

Para completar puede utilizar:

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

0 - 10 es a partir de la implementación java 6, no estoy seguro de los anteriores JDK

+1

valueOf es preferible según JavaDocs: 'Este' método de fábrica estático 'se proporciona con preferencia a un constructor (largo) porque permite la reutilización de valores BigDecimal utilizados frecuentemente'. –

11

No debe utilizar BigDecimal d = new BigDecimal (long); !!

La implementación en BigDecimal para longs no es precisa. ¡Para aplicaciones financieras esto es crítico!

¡Pero la implementación del argumento Cadena es mejor! Así usar algo como:

new BigDecimal(yourLong.toString()); 

Hubo una charla sobre http://www.parleys.com/ sobre esto.

+0

Me doy cuenta de que esto es un poco tarde en el día, pero ¿tiene algún vínculo más directo con el origen de este reclamo, porque al estar en el origen de BigDecimal en JDK7 parece en el mejor de los casos desactualizado. –

+0

Ha pasado un tiempo, todo lo que recuerdo es que han hecho esta afirmación, pero no puedo encontrar el enlace más. Quizás en JDK7 esto ya está optimizado. – Fico