Je comprends que tous les calculs sont effectués comme le plus grand type de données requis pour gérer les valeurs actuelles, mais lorsque vous faites une boucle transversale, comment multipliez-vous explicitement les longs? Le code suivant renvoie 0, je suppose, à cause d'un débordement.Multiplier explicitement les valeurs en tant que valeurs longues
long result = 0L;
List<Long> temp = (List<Long>) getListOfIntegers();
for (int i = 0; i < temp.size(); i++) {
result *= temp.get(i).longValue();
}
System.out.println(result);
Aucun débordement ne se passe ici - juste un bug qui, j'en suis sûr, a mordu tout le monde au moins une fois ... Et faites attention qu'il n'y ait pas de zéros dans la liste (ou que vous les manipuler correctement, s'ils ont besoin d'une main exceptionnelle lingue). –