2010-10-07 13 views
106

Me preguntaba si había alguna forma de convertir una variable de tipo Entero a BigInteger. Intenté encasillar la variable Entero, pero recibo un error que dice tipo inconvertible.Conversión de Entero, a BigInteger

+9

que han pedido algunas preguntas acerca de BigInteger que ser resueltos con bastante facilidad mediante la lectura de los Javadocs. Sigue el enlace en mi respuesta y comprueba todos los métodos y constructores que tiene BigInteger. – jjnguy

Respuesta

205

El método que desea es BigInteger#valueOf(long val).

por ejemplo,

BigInteger bi = BigInteger.valueOf(myInteger.intValue()); 

Hacer una cadena primera es innecesario y no deseado.

+2

@Mich, no. Si es un número entero, Java lo expandirá automáticamente por usted. (El OP dice que tiene un Entero) – jjnguy

+0

Eso funcionaría igual de bien. En un entero, intValue() no se desbordará, por lo que la llamada a valueOf simplemente ampliará el int a un largo. No hay una diferencia notable entre el uso de longValue() y intValue() en este ejemplo, pero si comenzó con un Long, querría usar longValue(). – jbindel

+0

También se ha sugerido que al dejar caer 'intValue()' se ve bien, y las versiones modernas de Java desunirán automáticamente el 'Entero' en un' int' que luego se utilizará. El desempaquetado automático solo oculta ese detalle de usted. – jbindel

-6

Usted puede utilizar el constructor de StringBigInteger así:

int regularInt = 321312; // some value 
BigInteger bigInt = new BigInteger(String.valueOf(regularInt)); 
0

Puede hacerlo de esta manera:

Integer i = 1; 
    new BigInteger("" + i); 
+4

Puedes, pero ¿por qué lo harías? Se propone una solución mucho mejor en la respuesta ya aceptada. –

+0

Hacer cadenas para realizar cálculos enteros desperdicia más ciclos de CPU de los que le gustaría contar. – jbindel

Cuestiones relacionadas