Maison  >  Article  >  Java  >  Pourquoi mon code Java génère-t-il une erreur « Nombre entier trop grand » lors de l'utilisation de 600851475143 ?

Pourquoi mon code Java génère-t-il une erreur « Nombre entier trop grand » lors de l'utilisation de 600851475143 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-07 18:30:03410parcourir

Why Does My Java Code Throw an

Résoudre l'erreur « Nombre entier trop grand » pour 600851475143

Considérez l'extrait de code suivant :

public class Three {
    public static void main(String[] args) {
        Three obj = new Three();
        obj.function(600851475143);
    }

    private Long function(long i) {
        Stack<Long> stack = new Stack<>();

        for (long j = 2; j <= i; j++) {
            if (i % j == 0) {
                stack.push(j);
            }
        }
        return stack.pop();
    }
}

Quand ce code est exécuté avec le littéral 600851475143 passé à la fonction, il renvoie une erreur "Nombre entier trop grand". Pour comprendre pourquoi, nous devons approfondir les types de données impliqués.

En Java, il existe des types de données primitifs, tels que int et long, qui représentent des nombres sans objets.

  • int est un entier signé de 32 bits, ce qui signifie qu'il peut représenter des entiers compris entre -2 147 483 648 et 2 147 483 647.
  • long est un entier signé de 64 bits, fournissant une plage de valeurs plus large allant de -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807.

Le problème ici est que 600851475143 dépasse la valeur maximale représentable par un int. Pour résoudre ce problème, nous devons utiliser un littéral de type long en ajoutant un suffixe "L" au numéro : 600851475143L.

obj.function(600851475143L);

Avec cette modification, le code s'exécutera sans rencontrer l'erreur et renverra le plus grand facteur premier de 600851475143L.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn