Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
705 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  float et écriture à 0.0f

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

float et écriture à 0.0f

n°1840173
weblook$$
Posté le 19-01-2009 à 19:14:41  profilanswer
 

SAlut,
 
 
pour écrire un float ou un double , un réel quoi en somme, il faut utiliser la syntaxe  
2.3f, avec le f à la fin , où c'est inutile en C++ ?
 
Merci.

mood
Publicité
Posté le 19-01-2009 à 19:14:41  profilanswer
 

n°1840176
Elmoricq
Modérateur
Posté le 19-01-2009 à 19:19:10  profilanswer
 

double foobar = 3.14;

 

std::cout << foobar << std::endl;

 

Et vu que ta question est ambiguë, si ce que tu souhaites c'est avoir une précision de 3 décimales :
std::cout << fixed << setprecision(3) << foobar << std::endl;

 

Mais bon, j'avoue très franchement que le formatage en C++ laisse à désirer, et il m'arrive de revenir aux bonnes vieilles fonctions ...printf() dans certains cas particuliers.


Message édité par Elmoricq le 19-01-2009 à 19:20:24
n°1840177
weblook$$
Posté le 19-01-2009 à 19:23:17  profilanswer
 

en faite je parlais niveau déclaration, faut-il faire :
double d=3.4f
ou
double d=2.8

n°1840230
Taz
bisounours-codeur
Posté le 19-01-2009 à 21:32:47  profilanswer
 

le f c'est pour float
pour double tu mets pas de suffixe.

n°1840255
weblook$$
Posté le 19-01-2009 à 23:57:18  profilanswer
 

thx

n°1841240
weblook$$
Posté le 21-01-2009 à 16:57:38  profilanswer
 

pareil l'écriture avec un u à la fin c'est pour unsigned ?
 
1u par exemple, j'ai déjà vu ça dans du code ..
 
et la deuxième question c'est pourquoi à t-on besoin de préciser f et u ?

n°1841249
Un Program​meur
Posté le 21-01-2009 à 17:28:48  profilanswer
 

weblook$$ a écrit :

pareil l'écriture avec un u à la fin c'est pour unsigned ?


 
Oui.  (En passant, pourquoi ne pas utiliser une reference pour ce genre de questions
simples?  le media me semble mal adapte: ce genre de question donnant l'impression
que tu ne cherches rien par toi-meme et ne donne pas envie de repondre.)
 

Citation :

et la deuxième question c'est pourquoi à t-on besoin de préciser f et u ?


 
(En passant, ca c'est une de question que je trouve adaptee a ce media; et si elle n'avait pas
ete la, je n'aurais vraisemblablement pas repondu).
 
Pour etre sur d'appeler la fonction surchargee qu'on desire.  Les cas ou le choix est important
sont relativement rares: a priori si il y a surcharge, le comportement devrait etre assez peu  
differents.  Il y a naturellement le cas des tests et celui des IO ou on veut parfois donner une
representation differente suivant le type pour la meme valeur.
 
Dans le cas de 1.0f, je ne vois guere d'autres cas.  A priori float ne devrait d'ailleurs etre utilise
que pour du stockage en quantite importante.  Les calculs, surtout enchaines, se faisant avec des
doubles ou meme des long doubles (mais la on a un probleme de portabilite, long double etant
parfois implemente de maniere similaire au double, parfois avec un peu plus de precision et aucune
perte de performance, parfois avec beaucoup plus de precision et une perte importante de performance).
 
Pour les unsigned, les regles de promotion dans les calculs et les regles de determination qui font
qu'un litteral soit d'une type signe ou non sont relativement complexes, et on parfois des resultats
surprenant, et parfois dependant de l'implementation.  Par soucis de clarete, de portabilite et  
de correction, on peut donc vouloir specifier qu'un litteral est bien non signe.

n°1841294
weblook$$
Posté le 21-01-2009 à 20:32:02  profilanswer
 

ok, c'est assez bon comme réponse

n°1841297
Elmoricq
Modérateur
Posté le 21-01-2009 à 20:45:22  profilanswer
 

weblook$$ a écrit :

ok, c'est assez bon comme réponse


Hm. Ça fait bien deux minutes que je bloque sur ce commentaire, en me demandant si c'est vraiment de la condescendance, ou bien une façon maladroite -à l'écrit- de dire merci.

n°1841306
weblook$$
Posté le 21-01-2009 à 20:56:53  profilanswer
 

oui merci quoi . mais, sur le : on a parfois des resultats surprenant, ça m'étonne car on sait très bien qu'en informatique il n'y a rien de surprenant, ou de résultats qui tombent du ciel....

Message cité 1 fois
Message édité par weblook$$ le 21-01-2009 à 20:57:26
mood
Publicité
Posté le 21-01-2009 à 20:56:53  profilanswer
 

n°1841309
Elmoricq
Modérateur
Posté le 21-01-2009 à 21:03:50  profilanswer
 

Ouais donc t'as lu qu'en diagonale quoi, dans son texte je ne vois nul part mention d'un quelconque résultat aléatoire.

n°1841312
weblook$$
Posté le 21-01-2009 à 21:06:30  profilanswer
 

ué en faite je comprends pas cette partie :
Pour les unsigned, les regles de promotion dans les calculs et les regles de determination qui font
qu'un litteral soit d'une type signe ou non sont relativement complexes, et on parfois des resultats
surprenant

n°1841330
weblook$$
Posté le 21-01-2009 à 21:46:16  profilanswer
 

enfin bref,c'est plus un forum débutant, je me suis pas forcément adressé au bon endroit, c'est tout de même fou le manque de forum professionnel francophone concernant la programmation.

n°1841333
Elmoricq
Modérateur
Posté le 21-01-2009 à 21:51:09  profilanswer
 

Ce qu'il veut dire, c'est que les conversions implicites c'est vite le bordel. En gros le compilateur tentera de déterminer si ton nombre est un long double, un double, un float, un unsigned long, un long, etc. jusqu'au int. Mais des fois il se chie dessus.

 

Par exemple :

$ cat foobar.cc
#include <iostream>

 

using namespace std;

 

int main(void) {
        cout << 1u - 2 << endl;

 

       return 0;
}

 

$ CC foobar.cc
$ a.out
4294967295

Message cité 1 fois
Message édité par Elmoricq le 21-01-2009 à 21:53:15
n°1841334
Elmoricq
Modérateur
Posté le 21-01-2009 à 21:52:53  profilanswer
 

weblook$$ a écrit :

enfin bref,c'est plus un forum débutant, je me suis pas forcément adressé au bon endroit, c'est tout de même fou le manque de forum professionnel francophone concernant la programmation.


 
T'as qu'à être compétent, tu ne seras pas obligé de poser de telles questions, comme ça.

n°1841336
weblook$$
Posté le 21-01-2009 à 22:00:33  profilanswer
 

Elmoricq a écrit :

Ce qu'il veut dire, c'est que les conversions implicites c'est vite le bordel. En gros le compilateur tentera de déterminer si ton nombre est un long double, un double, un float, un unsigned long, un long, etc. jusqu'au int. Mais des fois il se chie dessus.
 
Par exemple :

$ cat foobar.cc
#include <iostream>
 
using namespace std;
 
int main(void) {
        cout << 1u - 2 << endl;
 
        return 0;
}
 
$ CC foobar.cc
$ a.out
4294967295



mais donc là tu m'expliques que le fait d'utiliser 'u' ça emmêle le compilateur  :??:

n°1841339
Elmoricq
Modérateur
Posté le 21-01-2009 à 22:03:24  profilanswer
 

weblook$$ a écrit :


mais donc là tu m'expliques que le fait d'utiliser 'u' ça emmêle le compilateur  :??:


Ce n'est pas le "u" qui emmêle le compilateur, c'est l'absence de typage explicite sur le "2". Le compilateur essaie de prédire son type, et comme unsigned int est plus "prioritaire" que int, il a promu "2" en unsigned int (à cause  du 1u, oui) et effectue la soustraction sur cette base.


Message édité par Elmoricq le 21-01-2009 à 22:04:36
n°1841343
weblook$$
Posté le 21-01-2009 à 22:06:48  profilanswer
 

ah ok, intéréssant merci

n°1841410
Un Program​meur
Posté le 22-01-2009 à 08:55:29  profilanswer
 

weblook$$ a écrit :

enfin bref,c'est plus un forum
 débutant,


 
Et ca:
 

weblook$$ a écrit :

pareil l'écriture avec un u à la fin c'est pour unsigned ?


 
ce n'est pas une question de debutant -- paresseux ou incapable d'aller
voir dans une reference en prime?
 

Citation :

je me suis pas forcément adressé au bon endroit, c'est tout de
même fou le manque de forum professionnel francophone concernant la
programmation.


 
Aide-toi et le ciel t'aidera.  Qu'est-ce qui t'empeche de lancer un tel
forum?
 

weblook$$ a écrit :

mais donc là tu m'expliques que le fait
d'utiliser 'u' ça emmêle le compilateur :??:


 
Non, comme tu le disais si bien,  
 

weblook$$ a écrit :

on sait très bien qu'en informatique il n'y a
rien de surprenant, ou de résultats qui tombent du ciel....


 
le compilateur il applique les regles.  C'est le programmeur qui s'est
emmele les pinceaux et qui est surpris de ne pas avoir le resultat qu'il
attendait.  Et un professionnel -- et meme un amateur un peu eclaire --
sait tres bien que ca arrive beaucoup plus souvent qu'on ne l'aimerait des
regles qui ont des effets surprenants quand on les applique dans un autre
contexte que celui pour lequel elles ont ete pensees, ou quand elles
interagissent avec d'autres.

n°1841437
weblook$$
Posté le 22-01-2009 à 10:21:00  profilanswer
 


 

Un Programmeur a écrit :


 
ce n'est pas une question de debutant -- paresseux ou incapable d'aller
voir dans une reference en prime?
 


 
bah faut déjà être très inspiré pour trouver la requête google qui te donnera un lien où ça sera
expliqué de manière clair et limpide....Et pour ma part j'ai déjà un gros background en developpement,
je pense pouvoir t'apprendre des choses....Le coup du u à la fin,je n'ai jamais eu de cas où son intérêt
était révélé voilà tout, pour le f idem.
 

Citation :

je me suis pas forcément adressé au bon endroit, c'est tout de
même fou le manque de forum professionnel francophone concernant la
programmation.
 
Aide-toi et le ciel t'aidera.  Qu'est-ce qui t'empeche de lancer un tel
forum?


Le temps.
 
 

Un Programmeur a écrit :


 
le compilateur il applique les regles.  C'est le programmeur qui s'est
emmele les pinceaux et qui est surpris de ne pas avoir le resultat qu'il
attendait.  Et un professionnel -- et meme un amateur un peu eclaire --
sait tres bien que ca arrive beaucoup plus souvent qu'on ne l'aimerait des
regles qui ont des effets surprenants quand on les applique dans un autre
contexte que celui pour lequel elles ont ete pensees, ou quand elles
interagissent avec d'autres.


 
Je serais tenté de dire que dans 90% des cas, c'est peut être tout simplement  
qu'elles ont été mal pensées....


Message édité par weblook$$ le 22-01-2009 à 10:22:16
n°1841438
weblook$$
Posté le 22-01-2009 à 10:23:31  profilanswer
 

mais en tout cas merci pour tes réponses, qui m'ont appris des choses, bien évidemment

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  float et écriture à 0.0f

 

Sujets relatifs
[SQLSERVER To ORACLE] Le type floatProbleme Ecriture base de registre VB
Ecriture dans un fichierEcriture de log et accès simultané au fichier
[Résolu] Problème avec propriété floatécriture et lecture dans la base de registre
[EDIT après avoir bossé un peu] Retour sur le menu principalecriture SQL
problème de positionnement avec float [RESOLU][PHP] Conversion string to float... mais ca marche pas !
Plus de sujets relatifs à : float et écriture à 0.0f


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR