Printf-scanf grand nombre C++
Fermé
huacool
-
15 janv. 2008 à 15:11
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 17 janv. 2008 à 11:34
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 17 janv. 2008 à 11:34
A voir également:
- Printf-scanf grand nombre C++
- Photo insta en grand - Guide
- Excel trier du plus grand au plus petit - Guide
- Nombre facile - Télécharger - Outils professionnels
- Ordinateur portable grand ecran - Guide
- Gto nombre episode ✓ - Forum Jeux vidéo
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
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
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
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
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
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
>
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
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
>
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
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
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
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
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'