Gestion des grands nombres

epsiloneIB Messages postés 134 Statut Membre -  
epsiloneIB Messages postés 134 Statut Membre -
Bonjour,

Je souhaite gérer des nombres se composant de plus que 17 chiffres.
Quel est le type de données qui me permettera ceci?
Merci d'avance.

Epsilone
Configuration: Windows XP
Internet Explorer 7.0

30 réponses

  • 1
  • 2
  1. goulamass Messages postés 1427 Statut Membre 177
     
    Bonjour,

    Cela dépend déjà du langage de programmation que tu souhaites utiliser
    0
    1. epsiloneIB Messages postés 134 Statut Membre 8
       
      J'utilise du C.
      0
  2. goulamass Messages postés 1427 Statut Membre 177
     
    Hum je te conseille d'utiliser deux longs.

    Avec un représentant la "partie haute" et l'autre la partie basse.

    Après il te suffit de faire des décalages de bits pour avoir ce que tu veux.
    0
  3. epsiloneIB Messages postés 134 Statut Membre 8
     
    Tu peux me donner plus de précision?
    J'ai déclaré ma variable entant que double : double lVar = 0;
    Cependant quand je lui affecte un nombre contenant plus de 17 chiffres, ça ne me donne pas le résultat que je veux.

    Exemple :

    Moi j'affecte le nombre : 4200889797987987989999
    Mais quand je fais un print, ça me sort : 4200889797987987900000

    Si t'as une idée, passe la moi stp ;)

    Epsilone
    0
  4. epsiloneIB Messages postés 134 Statut Membre 8
     
    Pour plus de précision, voilà ce que je fais :

    double lVar = 0;
    number *char;

    number = "4200889797987987989999";
    lVar = atof(number);
    printf("%s\n%Lf\n\n",number, lVar);

    Résultat :

    4200889797987987989999
    4200889797987987900000

    Epsilone
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. goulamass Messages postés 1427 Statut Membre 177
     
    Bon en fait l'idée est que tu "coupes" ton nombre en deux.

    Par ex 4200889797 et 987987989999 pour le nombre 4200889797987987989999.

    Et tu stockes ces deux valeurs dans deux longs
    0
  7. epsiloneIB Messages postés 134 Statut Membre 8
     
    OK, bonne idée, mais pour les opérations arithmétiques, je fais comment?

    Epsilone.
    0
  8. goulamass Messages postés 1427 Statut Membre 177
     
    Hum le C est loin.

    Bah tu ajouts les parties basses entre elles.

    Tu récupères les retenues s'il y a (partie haute) et tu ajoutes les deux parties hautes plus les retenues pour avoir la nouvelle partie haute.
    0
  9. epsiloneIB Messages postés 134 Statut Membre 8
     
    Merci beaucoup,

    J'ai pensé à ça mais, j'ai cru avoir un truc prêt pour ça!
    Je vais essayer de coder ça.

    Merci bien pour ton coup de pouce ;)

    Epsilone
    0
  10. goulamass Messages postés 1427 Statut Membre 177
     
    De rien.

    Il est vrai que parfois ce n'est pas évident d'avoir une vue pour prog.

    Après ça devient une habitude pour tes pb aussi simple ^^
    0
  11. epsiloneIB Messages postés 134 Statut Membre 8
     
    Si c'est simple, file moi le code :)

    Merci encore une fois.

    Epsilone
    0
  12. goulamass Messages postés 1427 Statut Membre 177
     
    Hum comme je l'ai dit le C est loin derrière.

    Et puis il n'y a rien de mieux que de chercher par soi-même quoique parfois...

    Là ça fait un bon mois que je suis sur du Java spécifique et que je galère pas mal ;)
    0
  13. epsiloneIB Messages postés 134 Statut Membre 8
     
    :) De toutes les manières tu m'as été d'une grande aide!

    Epsilone
    0
  14. goulamass Messages postés 1427 Statut Membre 177
     
    Tant mieux alors si j'ai servi à quelque chose ;)
    0
  15. epsiloneIB Messages postés 134 Statut Membre 8
     
    Oui biensur :)

    Epsilone
    0
  16. goulamass Messages postés 1427 Statut Membre 177
     
    Au plaisir alors
    0
  17. epsiloneIB Messages postés 134 Statut Membre 8
     
    :)

    Epsilone
    0
  18. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    tu peux aussi essayer avec le type long double...
    0
  19. epsiloneIB Messages postés 134 Statut Membre 8
     
    Un long double peut contenir combien de chiffres?

    Avec ça :
    long double lVar = 0;
    number *char;

    number = "4200889797987987989999";
    lVar = atof(number);
    printf("%s\n%Lf\n\n",number, lVar);

    J'obtiens ça :
    4200889797987987989999
    -2614091096287914500000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000.000000

    Quand j'y pense, j'opte pour ta proposition, c'est mieux!

    Epsilone
    0
    1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
       
      je crois que le double c'est 1,7*10e308 et long double c'est 3,4*10e4932
      essaye en remplaçant %Lf par %lf
      printf("%s\n%lf\n\n",number, lVar);
      0
  20. goulamass Messages postés 1427 Statut Membre 177
     
    Et oui.

    J'avais oublié le long double.

    C'est si loin le C ^^
    0
  21. epsiloneIB Messages postés 134 Statut Membre 8
     
    J'ai bien essayé ce que tu m'as dit, mais ça me donne toujours des Zéros après le 17ème chiffre!

    4200889797987987989999
    4200889797987987900000.000000


    Epsilone
    0
  • 1
  • 2