IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Gestion de TRES gros nombres


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut Gestion de TRES gros nombres
    Hello

    J'ai besoin de manipuler de tres gros nombres tels que : 89331208330741200011
    Les formats entiers ne peuvent servir car visiblement trop petits.

    Le format double semble marcher mais il ne prends pas en compte mon incrementation.
    a mois que cela vienne du format d'affichage appliqué.

    Je dois incrementer ce nombre de N valeurs, et l'afficher convenablement.
    actuelement si je l'incremente de 1 a 10, il m'affiche toujours le meme resultat : 89331208330741200000

    Affichage grace a DecimalForamt("#");

    Note : a la base c'est uen chaine textuelle representant un nombre qu'il me fait convertir en entier pour gerer l'incrementation de ce nombre "textuel".
    ensuite il me faut le reconvertir en chaine pour l'afficher dans un fichier texte.

    si quelqu'un a une methode d'incrementation sans passer par un double ca m'arrangerais

  2. #2
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Utilise BigInteger.

    Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import java.math.BigInteger;
     
    public class Test {
        public static void main(String[] args) {
            BigInteger grosEntier = new BigInteger("89331208330741200011");
     
            // ajouter 10
            BigInteger resultat = grosEntier.add(BigInteger.valueOf(10L));
     
            System.out.println(resultat);
        }
    }

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    ok merci nickel
    Ca me simplifie pas mal lecode en fait

    au passage .. ya pas moyen de generer automatiquement la chaine texte correspondant a ce BigInteger sur N caracteres, en remplissant la difference par des Zero en tete de chaine ?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Clorish Voir le message
    au passage .. ya pas moyen de generer automatiquement la chaine texte correspondant a ce BigInteger sur N caracteres, en remplissant la difference par des Zero en tete de chaine ?
    Le format/printf de Java 5.0 fait cela très simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String text = String.format("%040d", grosEntier);
    Sinon ca doit être faisable avec un NumberFormat...

    a++

  5. #5
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Oui mais toutes les solutions necessitent de formater l'affichage a la compilation. Or moi c'est a l'execution.

    Exemple :
    String : 0000000001
    String -> int : 1
    int -> int : 1+1 = 2
    Int -> String : 0000000002

    la taille de la chaine de base saisie est variable ....

  6. #6
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Libre à toi de rendre le format dynamique.

    String : 0000000001
    int taille = "0000000001".length();
    String -> int : 1
    int -> int : 1+1 = 2
    Int -> String : String.format("%0" + taille + "d", entier)

Discussions similaires

  1. Comparaison de fichiers très gros volume
    Par tanys dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 27/06/2006, 23h58
  2. gerer des tres grand nombres
    Par Lorenzo77 dans le forum Delphi
    Réponses: 3
    Dernier message: 10/06/2006, 20h19
  3. Effacer un très gros repertoire
    Par Krispy dans le forum Administration système
    Réponses: 17
    Dernier message: 06/06/2006, 17h09
  4. [Console] Comment afficher de gros nombres à virgule ?
    Par Évariste Galois dans le forum C++
    Réponses: 9
    Dernier message: 11/07/2005, 09h49
  5. Optimisation de la lecture de tres gros fichiers
    Par Lydie dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/07/2004, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo