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

  1. #1
    Membre chevronné
    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
    Points : 2 158
    Points
    2 158
    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
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  2. #2
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Points : 1 954
    Points
    1 954
    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 chevronné
    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
    Points : 2 158
    Points
    2 158
    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 ?
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    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 chevronné
    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
    Points : 2 158
    Points
    2 158
    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 ....
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  6. #6
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Points : 1 954
    Points
    1 954
    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)

  7. #7
    Membre chevronné
    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
    Points : 2 158
    Points
    2 158
    Par défaut

    pas bete du tout
    J'ai deja forcement le length pour gerer la boucle for d'ajout manuel des "0" ....

    Comem quoi bien souvent on regarde pas plus loin que le bout du nez
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

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