5 votes

Java Long ne s'imprime pas correctement

Cela doit être très bête, mais j'essaie de faire ce qui suit :

long mult  = 2147483647 + 2147483647 + 2;
System.out.println(mult);  // result = 0

Maintenant, mon varaible mult serait un nombre à 10 chiffres, bien dans la gamme des longs. Je ne comprends donc pas pourquoi le résultat est 0. Quelqu'un peut-il m'expliquer pourquoi ?

12voto

Jon Skeet Points 692016

L'arithmétique est faite avec int au lieu de long car les trois valeurs constantes sont int s. Le fait que vous assignez à un long La variable n'est pas pertinente. Essayez ceci :

long mult  = 2147483647L + 2147483647L + 2L;

Vous pourriez probablement vous en sortir en faisant d'un seul des littéraux un long littéral si vous êtes prudent - mais personnellement, je l'appliquerais à tous, juste pour qu'il soit clair que vous voulez que long l'arithmétique pour tout.

3voto

Konrad Garus Points 19280

Pourquoi pas :

long mult = 2147483647L + 2147483647 + 2;

1voto

Manoj Points 2916

C'est parce que lorsque vous donnez un nombre directement comme num1 + num2 ils sont pris comme des entiers et puisque la valeur est hors limites dans ce cas, vous obtiendrez soit 0 soit une autre sortie en fonction de l'entrée.

Vous pouvez facilement résoudre ce problème en passant à

long mult  = 2147483647;
mult += 2147483647;
mult += 2;
System.out.println(mult);

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