Printf-scanf grand nombre C++
Fermé
huacool
-
15 janv. 2008 à 15:11
mamiemando Messages postés 33635 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2025 - 17 janv. 2008 à 11:34
mamiemando Messages postés 33635 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2025 - 17 janv. 2008 à 11:34
A voir également:
- Printf-scanf grand nombre C++
- Photo insta en grand - Guide
- Nombre facile - Télécharger - Outils professionnels
- Trier du plus petit au plus grand excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Ascii nombre de caractères - Guide
10 réponses
SebManfred
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
128
15 janv. 2008 à 15:15
15 janv. 2008 à 15:15
salut,
remplace tes float en double
à+
remplace tes float en double
à+
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
15 janv. 2008 à 15:40
15 janv. 2008 à 15:40
Salut.
en informatique, les nombre ont des précisions selon le type choisi.
Ainsi, un float semble avoir une précision de 10^-9, tandis qu'un double a une précision de 10^-15.
Autrement dit, l'ordinateur ne stocke qu'une partie d'un nombre décimal : 9 chiffres pour les float et 15 pour les doubles. Ensuite, il stock la puissance de 10 associer, mais c'est tout.
en informatique, les nombre ont des précisions selon le type choisi.
Ainsi, un float semble avoir une précision de 10^-9, tandis qu'un double a une précision de 10^-15.
Autrement dit, l'ordinateur ne stocke qu'une partie d'un nombre décimal : 9 chiffres pour les float et 15 pour les doubles. Ensuite, il stock la puissance de 10 associer, mais c'est tout.
dubcek
Messages postés
18779
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 avril 2025
5 630
15 janv. 2008 à 16:05
15 janv. 2008 à 16:05
ou même long double jj;
belhauss
Messages postés
69
Date d'inscription
dimanche 24 décembre 2006
Statut
Membre
Dernière intervention
9 février 2012
3
15 janv. 2008 à 20:25
15 janv. 2008 à 20:25
#include <stdio.h>
#include <iostream>
long double jj;
main()
{
cout<<"Entrez la date en jours juliens:"<<endl;
cin>>jj;
cout<<"La date en juliens est: <<jj<<endl;
system("PAUSE");
}
#include <iostream>
long double jj;
main()
{
cout<<"Entrez la date en jours juliens:"<<endl;
cin>>jj;
cout<<"La date en juliens est: <<jj<<endl;
system("PAUSE");
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
15 janv. 2008 à 23:25
15 janv. 2008 à 23:25
La version de <4> codée correctement :
Note que la méthode precision peut être appliquée à std::cout en vue de changer le nombre de chiffres significatifs. Exemple :
Bonne chance
#include <iostream> #include <cstdio> // pour les windowsiens int main(){ long double jj; std::cout << "Entrez la date en jours juliens:" << std::endl; std::cin >> jj; cout << "La date en juliens est:" << jj << std::endl; getchar(); // pour les windowsiens return 0; }
Note que la méthode precision peut être appliquée à std::cout en vue de changer le nombre de chiffres significatifs. Exemple :
#include <iostream> #include <cstdio> // pour les windowsiens int main(){ double x = 1.23456789; std::cout.precision(2); std::cout << x << std::endl; std::cout.precision(5); std::cout << x << std::endl; getchar(); // pour les windowsiens return 0; }
Bonne chance
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
16 janv. 2008 à 08:49
16 janv. 2008 à 08:49
Olalal ! Tu as oublié un std:: au deuxième cout !!!
Honte sur toi.
D'après la doc, tu peux aussi utiliser des manipulateur pour la precision :
Honte sur toi.
D'après la doc, tu peux aussi utiliser des manipulateur pour la precision :
std::cout<<std::setprecision(3)<<x<<std::setprecision(15)<<x<<std::endl;
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
>
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
16 janv. 2008 à 22:53
16 janv. 2008 à 22:53
?
Non
Non
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
>
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
17 janv. 2008 à 10:47
17 janv. 2008 à 10:47
Si, mais il est vrai qu'il faut include <iomanip> aussi.
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
>
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
17 janv. 2008 à 11:34
17 janv. 2008 à 11:34
Ah oui, effectivement au temps pour moi. Par contre je n'ai jamais inclu <iomanip> et ça marche très bien chez moi. Enfin bref...
Merci pour toutes ces réponses.
En utilisant "long double" ça marche parfaitement.
En revanche avec "double" ça ne marche pas.
Si je lui donne 2454329.666326 , il m'affiche 6.140953e-315 .
Or normalement les double vont de -1.7*10^-308 à 1.7*10^308.
Quelqu'un sait-il pourquoi?
A plus!
En utilisant "long double" ça marche parfaitement.
En revanche avec "double" ça ne marche pas.
Si je lui donne 2454329.666326 , il m'affiche 6.140953e-315 .
Or normalement les double vont de -1.7*10^-308 à 1.7*10^308.
Quelqu'un sait-il pourquoi?
A plus!
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
16 janv. 2008 à 22:54
16 janv. 2008 à 22:54
Peux tu nous donner ton code actuel et les valeurs que tu saisis à l'exécution ?
Voici mon code:
#include <stdio.h>
#include <iostream>
double jj;
main()
{
printf ("Entrez la date en jours juliens:\n");
scanf("%e",&jj); // float ne prend que 6 chiffres avant et aprés la virgule; au dessus ça deconne */
printf("La date en juliens est: %e\n",jj);
system("PAUSE");
}
Si je saisis la valeur 2454329.666326 , il m'affiche 6.140953e-315 !
#include <stdio.h>
#include <iostream>
double jj;
main()
{
printf ("Entrez la date en jours juliens:\n");
scanf("%e",&jj); // float ne prend que 6 chiffres avant et aprés la virgule; au dessus ça deconne */
printf("La date en juliens est: %e\n",jj);
system("PAUSE");
}
Si je saisis la valeur 2454329.666326 , il m'affiche 6.140953e-315 !
mamiemando
Messages postés
33635
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 avril 2025
7 842
17 janv. 2008 à 10:27
17 janv. 2008 à 10:27
C'est une blague ? Ca sert à quoi qu'on te donne un code qui marche (cf <5>) (qui pour le coup est un code C++ et non un code C comme celui que tu proposes) ?
Comment corriger ton programme :
Ton main a pas de valeur de retour, ton system("PAUSE") est spécifique windows, et les printf sont sensés être fait avec un %lf ou un %g.
Comment corriger ton programme :
Ton main a pas de valeur de retour, ton system("PAUSE") est spécifique windows, et les printf sont sensés être fait avec un %lf ou un %g.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
17 janv. 2008 à 10:44
17 janv. 2008 à 10:44
j'utlise régulièrement le '%e' pour la sortie des double, je n'ai jamais eu de problème.
par contre, je viens de tester, pour le scanf, '%e' ne fonctionne pas en effet. utilise comme le dit mamiemando '%lf'
par contre, je viens de tester, pour le scanf, '%e' ne fonctionne pas en effet. utilise comme le dit mamiemando '%lf'