Gestion des grands nombres
Fermé
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
-
20 mai 2008 à 13:34
epsiloneIB Messages postés 133 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 13 septembre 2009 - 3 juin 2008 à 15:39
epsiloneIB Messages postés 133 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 13 septembre 2009 - 3 juin 2008 à 15:39
A voir également:
- Gestion des grands nombres
- Code binaire des nombres - Guide
- Logiciel gestion photos - Guide
- Hdmi gestion alim ✓ - Forum Matériel & Système
- Logiciel gestion association gratuit excel - Télécharger - Gestion de projets
- Logiciel gestion cave à vin gratuit - Télécharger - Cuisine & Gastronomie
30 réponses
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
20 mai 2008 à 13:37
20 mai 2008 à 13:37
Bonjour,
Cela dépend déjà du langage de programmation que tu souhaites utiliser
Cela dépend déjà du langage de programmation que tu souhaites utiliser
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
20 mai 2008 à 13:50
20 mai 2008 à 13:50
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.
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.
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
20 mai 2008 à 14:50
20 mai 2008 à 14:50
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
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
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
20 mai 2008 à 14:54
20 mai 2008 à 14:54
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
double lVar = 0;
number *char;
number = "4200889797987987989999";
lVar = atof(number);
printf("%s\n%Lf\n\n",number, lVar);
Résultat :
4200889797987987989999
4200889797987987900000
Epsilone
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
20 mai 2008 à 14:54
20 mai 2008 à 14:54
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
Par ex 4200889797 et 987987989999 pour le nombre 4200889797987987989999.
Et tu stockes ces deux valeurs dans deux longs
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
20 mai 2008 à 14:58
20 mai 2008 à 14:58
OK, bonne idée, mais pour les opérations arithmétiques, je fais comment?
Epsilone.
Epsilone.
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
20 mai 2008 à 15:56
20 mai 2008 à 15:56
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.
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.
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
22 mai 2008 à 18:36
22 mai 2008 à 18:36
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
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
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
23 mai 2008 à 09:37
23 mai 2008 à 09:37
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 ^^
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 ^^
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
23 mai 2008 à 14:08
23 mai 2008 à 14:08
Si c'est simple, file moi le code :)
Merci encore une fois.
Epsilone
Merci encore une fois.
Epsilone
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
23 mai 2008 à 14:50
23 mai 2008 à 14:50
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 ;)
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 ;)
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
23 mai 2008 à 15:20
23 mai 2008 à 15:20
:) De toutes les manières tu m'as été d'une grande aide!
Epsilone
Epsilone
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
23 mai 2008 à 16:07
23 mai 2008 à 16:07
Tant mieux alors si j'ai servi à quelque chose ;)
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
23 mai 2008 à 16:09
23 mai 2008 à 16:09
Oui biensur :)
Epsilone
Epsilone
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
23 mai 2008 à 16:09
23 mai 2008 à 16:09
Au plaisir alors
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
23 mai 2008 à 16:10
23 mai 2008 à 16:10
:)
Epsilone
Epsilone
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
23 mai 2008 à 16:13
23 mai 2008 à 16:13
tu peux aussi essayer avec le type long double...
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
23 mai 2008 à 16:30
23 mai 2008 à 16:30
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
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
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
23 mai 2008 à 16:43
23 mai 2008 à 16:43
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
essaye en remplaçant %Lf par %lf
printf("%s\n%lf\n\n",number, lVar);
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
23 mai 2008 à 16:34
23 mai 2008 à 16:34
Et oui.
J'avais oublié le long double.
C'est si loin le C ^^
J'avais oublié le long double.
C'est si loin le C ^^
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
23 mai 2008 à 17:02
23 mai 2008 à 17:02
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
4200889797987987989999
4200889797987987900000.000000
Epsilone
20 mai 2008 à 13:39