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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probleme de décimales ..


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

Probleme de décimales ..

samedi 5 novembre 2005 à 17:45:17 | Probleme de décimales ..

nashoy


Bonjour,
Je commence en c++ et je commence à recontrer les premiers petits bloquages ; en effet, j'ai un petit problème avec les décimales :

int b=3;
int a=10;
float res;
res = a/b;
printf("%f",res);

et il m'affiche : 3.000000 ...
Où est l'erreur ?


Autres petites questions au passage :
- Y a-t-il une différence entre cout/cin et printf/scanf ? (au niveau de la vitesse, utilisation, "clarté" de la source , ...)
- Si j'ai tout compris, l'équivalent de "Dim ma_var As String" en VB est "char *ma_var" en cpp .. ?
- Quelle est la différence entre "char *ma_var" et "char ma_var[256]" par exemple ?

Merci

nashoy

samedi 5 novembre 2005 à 18:04:54 | Re : Probleme de décimales ..

MrdJack

Réponse acceptée !
une opération entre 2 entiers ne donnera jamais le résultat que tu souhaite et pour cause, si tu décompose ton code, tu remarquera que tu effectues une division entre 2 entiers : 10/3  qui vaux 3
puis tu affecte cette valeur calculée dans une variable de type float  --->  ca rajoute juste la virgule et quelques 0.

pour faire ton opération comme tu l'entend, utilise les cast avec tes integer ou encore, utilise des le début des variables float.
ca dépend de ton programme, les deux méthodes sont sensiblement équivalentes.

voila ! si tu tombe sur un autre probleme dans le genre, pense bien a décomposer étape par étape les opérations effectuées, c'est la premiere chose a faire !

@++


samedi 5 novembre 2005 à 18:08:49 | Re : Probleme de décimales ..

Tidam

Réponse acceptée !
10 / 3 = 3.333333 on est d'accord, sauf que en C/C++ cela depent du type des variables int/float.
on obtient 3.333333 lorsque l'on travaille en float mais dans ton exemple, tu divise 2 entiers dont le resultats est un entier ensuite tu stock le resultats dans un float...

traduction: a(int)/b(int) donne donc un int le fait de stocker le resultat dans le float rajoute simplement le .000000 a la valeur obtenue.

concernant cin/cout printf/scanf c'est simple : printf/scanf = C - cin/cout = C++ ... au niveau utilisation je pense que cin/cout sont plus simple car tu n'as pas a preciser quel type de variable c'est !

sinon pour le reste j'te conseil de prendre des cours de C/C++ (livre ou internet) ...
samedi 5 novembre 2005 à 18:18:25 | Re : Probleme de décimales ..

vangeurmasker

Membre Club
Réponse acceptée !
Pour que ton code marche il suffit de faire :
res = (float)a/(float)b;

explication :
la division de deux entier donne un resultat entier (ici 3). Il s'agit de la division euclidienne. Si tu veut le reste de ta division il suffit d'utiliser : a%b qui vaudra 1 ici.
en précisant (float)a et (float)b, tu dit a ton compilateur que tu veut convertir tes variables en float avant de faire la division et non après comme dans ton code. Voila c'est aussi simple que ça.
samedi 5 novembre 2005 à 18:25:51 | Re : Probleme de décimales ..

nashoy

Ah oui parfait! Merci beaucoup c'est vraiment génial de recevoir une réponse aussi rapidement !!

nashoy



Cette discussion est classée dans : probleme, var, char, res, décimales


Répondre à ce message

Sujets en rapport avec ce message

Probleme GTK [ par Jo ] Salut,Quelqu'un pourrait me dire ou est l'erreur ?char * fichier; char *z;gchar *temp;temp = gtk_entry_get_text(GTK_ENTRY(Data));fd1= fopen((char *)te PROBLEME POINTEURS [ par zeloveur ] char * saisirChaine(){ int i=0; char *chn; chn=(char *)malloc(sizeof(char)); do { chn[i]=getchar(); chn=(char *)realloc(chn,(++i+1)*sizeof(char)); } manipulation de caractères [ par vanpet ] Bonjour à tous !Voici mon probleme (de debutant, mais faut bien commencer un jour)...j'ai 3 variables *char syllabe1 (2 et 3)qui contiennent chacune u Probleme complique sur pointeur mais reponse simple surement [ par MrKribou ] Un probleme de pointeur je pense.Je vous expose la situation :Dans une Classe (ClassEx) voila je fais un truc du genre :char* pChar = this->getInfo("i Pointeur et objet ET collection d'objet [ par MrKribou ] En fait je savais pas trop quoi mettre comme titre pour pas copier :pBon je vous explique mon probleme (j'ai pas le source de ce probleme sous la main PROBLEME DE CONCATENATION [ par 24Karas ] PROBLEME DE CONCATENATION------------------------probleme :Je veux concaténer 2 chaines mais ça foireà l'exécution. Si vous savez pourquoi dîtes le mo Probleme de conversion [ par allo8086 ] Salut tous le mondeEnfet, je veux convertir une chaine de caratere lue a partir d'un fichier texte en unsigned char.A propos j'ai essayé de passer pa Probleme Comparaison deux chaines de caracteres [ par Coxis ] Salut,Bon c pas compliqué j'ai 2 tableaux de caracteres de tailles differentes, je veux les comparer mais ca marche pas...En fait a la base je voulais Probleme Socket C [ par VoLc0m ] voila mon pb :en C bien sur :) je dois, par socket, envoyer ca a une address (server counter strike) :The packet should start with 4 consecutive bytes probleme de *Char [] [ par oRTEEZ ] Bonjour, voila mon nouveau petit probleme.je pense pas que cela soit tres dur.J'ai un char Text[256] : contenant un texte entre par l'user.et unchar


Nos sponsors


Sondage...

Comparez les prix

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,702 sec (3)

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