416 votes

Comment puis-je convertir un long int en Java ?

Comment puis-je convertir un long int en Java ?

497voto

Frxstrem Points 5384

Le cast de type simple devrait le faire :

Notez, cependant, qu’un grand nombre (habituellement plus grands que et plus petit que ) détruira une partie des bits et serait mal représentée.

Par exemple, serait représenté comme .

215voto

Laxman Chari Points 52
<pre><code></code><p><b></b></p></pre>

71voto

mndrix Points 1061

Pour de petites valeurs, le casting est assez:

long l = 42;
int i = (int) l;

Cependant, une long peut contenir plus d'informations que les int, de sorte qu'il n'est pas possible de convertir parfaitement d' long de int, dans le cas général. Si l' long détient un nombre inférieur ou égal à Integer.MAX_VALUE vous pouvez le convertir par la coulée, sans perdre aucune information.

Par exemple, l'exemple de code suivant:

System.out.println( "largest long is " + Long.MAX_VALUE );
System.out.println( "largest int is " + Integer.MAX_VALUE );

long x = (long)Integer.MAX_VALUE;
x++;
System.out.println("long x=" + x);

int y = (int) x;
System.out.println("int y=" + y);

produit la sortie suivante sur ma machine:

largest long is 9223372036854775807
largest int is 2147483647
long x=2147483648
int y=-2147483648

Avis le signe négatif sur y. Parce qu' x a tenu une valeur plus grande que Entier.MAX_VALUE, int y a été incapable de tenir. Dans ce cas, il enroulé autour pour les nombres négatifs.

Si vous voulais pour gérer ce cas de vous-même, vous pourriez faire quelque chose comme:

if ( x > (long)Integer.MAX_VALUE ) {
    // x is too big to convert, throw an exception or something useful
}
else {
    y = (int)x;
}

Tout cela suppose des nombres positifs. Pour les nombres négatifs, utilisez MIN_VALUE au lieu de "MAX_VALUE'

39voto

Andrej Herich Points 697

Si à l'aide de la Goyave de la bibliothèque, il existe des méthodes Ints.checkedCast(long) et services de renseignements.saturatedCast(long) pour la conversion de long de int.

30voto

Theo Points 60103
<pre><code></code><p><code></code><code></code>, vous connaissez la différence entre les deux ?</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X