Printf-scanf grand nombre C++
Fermé
huacool
-
15 janv. 2008 à 15:11
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 17 janv. 2008 à 11:34
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 17 janv. 2008 à 11:34
A voir également:
- Printf-scanf grand nombre C++
- Printf hexa - Forum Programmation
- Grand theft auto: vice city - Télécharger - Action & Aventure
- Nombre premier en c - Astuces et Solutions
- Photo instagram en grand - Guide
- Ordinateur portable grand ecran - 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
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
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
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
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
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
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
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
>
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
16 janv. 2008 à 22:53
16 janv. 2008 à 22:53
?
Non
Non
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
>
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
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
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
>
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
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
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
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'