Variable contenant beaucoups de chiffre
Résolu
ToXik117
-
ToXik117 -
ToXik117 -
Bonjour,
Voila je dois trouver (ou créer ça me derange pas) un programme dont la fonction serait aa mise en memoire RAM de nombre assez gros. Voila l'opération que le programme devrait faire --> 2^1096-1
Il me faudrais une variable comme Double. Mais Double ne sert que pour 308chiffres, cepandant il ne prends en compte que les 19 premiers chiffres, et remplace les autres par des 0.
Il me faut donc une variable de type Double, mais qui garde tout sa précision.
Voila, j'espere avoir été assez explicite, Merci d'avance !
Voila je dois trouver (ou créer ça me derange pas) un programme dont la fonction serait aa mise en memoire RAM de nombre assez gros. Voila l'opération que le programme devrait faire --> 2^1096-1
Il me faudrais une variable comme Double. Mais Double ne sert que pour 308chiffres, cepandant il ne prends en compte que les 19 premiers chiffres, et remplace les autres par des 0.
Il me faut donc une variable de type Double, mais qui garde tout sa précision.
Voila, j'espere avoir été assez explicite, Merci d'avance !
A voir également:
- Variable contenant beaucoups de chiffre
- Excel trier par ordre croissant chiffre - Guide
- Clavier iphone chiffre et lettre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Chiffre en lettre - Télécharger - Outils professionnels
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
5 réponses
Salut.
Il y des gens qui ont eu le même souci de précision que toi. Cherche bien sur le forum.
1096 bits, ça fait beaucoup. Un double est codé sur 64 bit et un flottant double précision sur 128. (regarde double ou quadruple precision sur wikipedia, tu comprendras mieux le problème).
Il y a des bibliothèques scientifique (comme GSL) qui permettent d'augmenter la précision. http://www.freeprogrammingresources.com/mathlib.html
Sinon, en C++, faire ça avec des entiers et des classes doit être assez aisement réalisable. Il suffit de mettre plusieurs entier dans la classe et de redéfinir toutes les opérations.
Il y des gens qui ont eu le même souci de précision que toi. Cherche bien sur le forum.
1096 bits, ça fait beaucoup. Un double est codé sur 64 bit et un flottant double précision sur 128. (regarde double ou quadruple precision sur wikipedia, tu comprendras mieux le problème).
Il y a des bibliothèques scientifique (comme GSL) qui permettent d'augmenter la précision. http://www.freeprogrammingresources.com/mathlib.html
Sinon, en C++, faire ça avec des entiers et des classes doit être assez aisement réalisable. Il suffit de mettre plusieurs entier dans la classe et de redéfinir toutes les opérations.
class int1152 { uint64 n[18]; } int1152 operator+(int1152 a,int1152 b) { short retenus[18]; int1152 r; if(a.n[0]>1<<63 || b.n[0]>1<<63)// à vérifier retenu[0]=1; r.n[0]=a.n[0]+b.n[0]; if(a.n[1]>1<<63 || b.n[1]>1<<63)// à vérifier retenu[1]=1; r.n[1]=a.n[1]+b.n[1]+retenu[0]; //etc. return r; }
Il existe des langages non typé qui sont capables de faire des opérations sur des chaînes de caractères, par exemple Perl.
Je ne sais pas ce que l'on entend par 'quadruple précision' mais jadis les coprocesseurs Intel série x87 étaient capables de travailler sur des entiers de 64 bits.
Tu peux, comme il t'a été dit, développer une classe, sinon il existe des bibliothèques comme GMP.
Tu peux aussi choisir un autre langage: Python travaille avec des entiers seulement limités par la taille de la mémoire RAM.
Bonne réflexion.
Je ne sais pas ce que l'on entend par 'quadruple précision' mais jadis les coprocesseurs Intel série x87 étaient capables de travailler sur des entiers de 64 bits.
Tu peux, comme il t'a été dit, développer une classe, sinon il existe des bibliothèques comme GMP.
Tu peux aussi choisir un autre langage: Python travaille avec des entiers seulement limités par la taille de la mémoire RAM.
Bonne réflexion.
pour les flottant :
simple précision : 32 bits (float en C)
double précision : 64 bits (double en C)
quadruple précision : 128 bits (long double en C, supporté par peu de compilateurs https://en.wikipedia.org/wiki/Quadruple_precision_floating-point_format
Python travail sur un nombre indéfini en longueur d'entier ? C'est bon à savoir, bien que très étonnant. Je testerai.
simple précision : 32 bits (float en C)
double précision : 64 bits (double en C)
quadruple précision : 128 bits (long double en C, supporté par peu de compilateurs https://en.wikipedia.org/wiki/Quadruple_precision_floating-point_format
Python travail sur un nombre indéfini en longueur d'entier ? C'est bon à savoir, bien que très étonnant. Je testerai.
Ok, donc pour les entiers, la quadruple précision, ce serait donc aussi 64 bits ?
Pour Python, je confirme; par défaut, lors de la déclaration, les entiers sont considérés comme 'integer' c'est-à-dire des entiers signés 32 bits (donc +- 2 milliards) et lorsque le besoin s'en fait sentir, ils sont automatiquement transformé dans un autre format 'long' qui n'a quasiment plus de limites.
Pour t'en convaicre, essaie le programme suivant:
Pour Python, je confirme; par défaut, lors de la déclaration, les entiers sont considérés comme 'integer' c'est-à-dire des entiers signés 32 bits (donc +- 2 milliards) et lorsque le besoin s'en fait sentir, ils sont automatiquement transformé dans un autre format 'long' qui n'a quasiment plus de limites.
Pour t'en convaicre, essaie le programme suivant:
#!/usr/bin/python # -*- coding: utf-8 -*- a, b = 1, 1 while (a != 0) : a = input("Donner une valeur:") b = input("Donner l'exposant:") print a, "puissance", b, "=", a**bEn donnant 2 et 1096, tu obtiendra le résultat demandé... plus de trois cents chiffres !
Ce n'est pas le genre de trucs pour lesquels les scientifiques utilisent mathlab à tout hasarre ?
http://www.mathworks.com/matlabcentral/newsreader/view_thread/242167
https://www.mathworks.com/matlabcentral/fileexchange/6446-multiple-precision-toolbox-for-matlab
ça semble en effet possible avec des toolbox supplémentaire.
Et GMP en C.
https://www.mathworks.com/matlabcentral/fileexchange/6446-multiple-precision-toolbox-for-matlab
ça semble en effet possible avec des toolbox supplémentaire.
Et GMP en C.
Désolé de ne pas répondre directement, je viens d'entamer ma rentrée, donc je vais être un peu occupé. Je vois ce qu'on peux faire avec ce que vous m'avez dit, et je vous tiens au courant, Merci de vos réponses !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
As tu regarder les bibliothèques mathématiques ?
Il m'as dit que des quadruple ça existe pas En C ni En C++
-Delcaration De variable
-Boucle (If, While, Then, For)
-Saisis de donnés
-Création de fichier
-Lecture, ecriture et save de donné dans un fichier
-Indexation
AuTant dire qu'il est débutant.
Le quadruple précision existe sur certaines machine, mais pas sur les processeurs type Intel.