begin process at 2012 05 29 18:55:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

pb stupide : diviser


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb stupide : diviser

jeudi 26 février 2004 à 17:56:48 | pb stupide : diviser

guifr

Alors là, je sens que je vais craquer, je suis à deux doigts de commettre un ordicide !
sois mon pc est complètement stupide, ou alors c'est moi (ce qui est d'ailleurs tout à fait possible ) !
Ceci dit le code suivant, en apparence anodin, me pose problème, et le problème est d'autant plus grand que le code est anodin justement :
considérons le petit morceau de code :

#include <iostream>

using std::cout;
using std::cin;

int main()
{
float fl;


fl = 4 / 10;
cout << "resultat " << fl << "\n";
cin >> fl;
}


Quel sera la valeur retournée ? celle que l'on serait en droit d'attendre, c'est à dire 0.4 ? et bien non ! il me sort "0", et si je l'utilise pour calculer, c'est bien un calcul avec 0 qu'il effectue, le pb ne vient donc pas de l'affichage...
A titre d'information, le problème est le même avec une déclaration de fl en
double
ou
long double
.
J'ai compilé avec DJGPP, ceci dit, avec Dev-C++ (4) le pb est exactement le même...
Alors comme il me semble étonnant qu'un langage comme le C++ ne sache pas faire des divisions à virgule, j'imagine que le problème vient de moi... mais j'ai beau chercher, je suis même aller vérifier que "/" était bien l'opérateur pour les divisions... mais rien à faire ! j'ai aussi rajouté math.h (sans trop y croire d'ailleurs) ça n'a rien changé...
Alors ma foi, si quelqu'un a une explication...
jeudi 26 février 2004 à 18:02:06 | Re : pb stupide : diviser

BruNews

Administrateur CodeS-SourceS
Essaie:
fl = 4.0 / 10.0;

ciao...
BruNews, Admin CS, MVP Visual C++
jeudi 26 février 2004 à 18:10:53 | Re : pb stupide : diviser

guifr

Que tu sois remercié de cette aide sur 7 générations !
J'aurais jamais cru que c'était un truc pareil, là alors ça m'épate ! ceci dit je comprends pas le trop le fond du pb, à savoir poourquoi ça marchais pas avant, enfin l'essentiel c'est que ça marche maintenant !
Ceci dit, et tant qu'on est dans le problème des nombres réels, y a t-il un moyen d'obtenir plus que les, décevants, 6 chiffres significatifs ? à moins que ce ne soit qu'une convention d'affichage, et si oui, comment la passer outre ?

Merci encore !
jeudi 26 février 2004 à 18:23:50 | Re : pb stupide : diviser

BruNews

Administrateur CodeS-SourceS
sers toi de sprintf sur un buffer et tu pourras specifier le nombre de decimales, affiche ensuite le buffer.
Ton prob precedent: logique puisqu'il affectait le resultat d'une div de 2 entiers, donne un entier. Faudra y penser pour la suite.

ciao...
BruNews, Admin CS, MVP Visual C++
jeudi 26 février 2004 à 19:53:01 | Re : pb stupide : diviser

djl


ou
cout << "resultat " <<setprecision(10)<< fl << "\n";
jeudi 26 février 2004 à 21:55:04 | Re : pb stupide : diviser

Funcky


pour le fond du problème, c'est assez simple, pour le compilateur tu divise en entier par un entier ... et qui dit opération sur les entiers, bein ca donne un entier ...

Dans le cas ou tu doit diviser deux variables entières pour donner un float, il faut faire un cast :

int i,j;
float h;

i = 4;
j = 10;

h = (float) i / (float) j;

dans le but de "lui faire croire" que tu fait une opération sur des float

===============================

Funcky

===============================

On dit que seulement dix personnes au monde comprenaient Einstein. Personne ne me comprend. Suis-je un génie ?
samedi 28 février 2004 à 21:22:59 | Re : pb stupide : diviser

guifr

Moui, certes, ceci dit, je ne pense pas que c'eut été très opportun de faire ainsi, si a priori tu demande à ce que cette valeur soit stocké dans une variable de type réel, c'est que justement tu t'attends à ce que le résulat soit réel...
Du reste, je ne connais pas d'autre langage qui raisonne ainsi (ceci dit je ne connais pas beaucoups de langages non plus, ceci expliquant peut-être cela...)
dimanche 29 février 2004 à 10:49:51 | Re : pb stupide : diviser

djl

au contraire, c'est une chance de pouvoir specifier le type de l'operation


Cette discussion est classée dans : problème, pb, code, fl, stupide


Répondre à ce message

Sujets en rapport avec ce message

Violation d'accés sur opérateur new [ par afterwork ] Bonsoir, j'experimente un poblème pour le moins deconcertant, des crashs et allocations de memoire intempestives, acrochez vous c'est assez surprenan Problème de traduction d'un Checksum Perl en langage C++ [ par dreddfullmetal ] Bonjour a tous :) Je suis nouveau sur le site et je viens a votre rencontre car je suis sur un code qui me pose problème depuis quelque jour déjà. Al ImageMagick [ par majong ] Bonjour, j'ai réinstallé ImageMagick sur Debian GNU/Linux 4.0 (il marchait bien mais il me manquait une option) mais j'ai un gros problème maintenant Optimisation avec SSE ?! [ par sdrh ] Bonjour à tous, J'ai un petit problème assez banal, on trouve bcp de forum qui abordent la question, mais je n'ai tjs pas trouver de solution à mon l PB manifest vc++ [ par lectpe ] Bonjour à tous. Je travaille actuellement sous Microsoft Visual Studio 9.0. Je veux ajouter le style XP à une application. J'ai essayé d'ajouter un Problème avec Code::Blocks [ par Olivier09 ] Bonjour tout le monde je débute en programmation avec Code::Blocks et il me dit que le compiler n' est pas valable ou je ne sais quoi ...[^^fou] Qui p Le nouveau GCC et le problème avec iostream.h [ par zaim khelifi ] Bonjour à tous; Dernièrement, avec le nouveau compilateur GCC 4.3, lorsqu’on compile :[code=cpp] #include int main() { cout<<"Hello Monde\n"; } [/cod problème de compilation [ par boualiasma ] Bonjour, J'ai un programme codé en c sous Microsoft Visual C++ 6.0 qui compile et s'éxecute bien. J'ai essayé de compiler ce programme avec Dev-C++ Problème/Question Threads mélangés avec Exceptions [ par HeXoR ] Bonjour, mon problème est le suivant : j'ai une classe qui contient une méthode lancée plusieurs fois en parallèle grâce aux threads (j'utilise Create


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales