Comment puis-je convertir un long int en Java ?
Réponses
Trop de publicités?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'
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
.