Warning a cause de Structures et Float...

Warning a cause de Structures et Float... - C - Programmation

Marsh Posté le 03-04-2005 à 12:01:32    

Bonjour,
j'ai pas mal de warning de ce type lorsque je compile mon programme
"warning C4305: 'initializing' : truncation from 'const double ' to 'float '"
 
En fait, mon programme contient une structures:
 
typedef struct {
    int numonenclature;
    char intituler [50];
    float montantvipo;
    float montantao;
    float ticketmod;
} examen;
 
 
Je déclare le tableau de la structures avec ces valeurs:
 
examen tabe[LGMAXE]={470750,"EGG",15.48,13.16,2.32,
                         475812,"ECG effort",30.58,26,4.58,
                         469814,"Echo couleur",62.32,59.84,2.48,
                         475893,"Contrôle VVI",30.16,25.64,4.52,
                         477893,"Contrôle défibrillateur",100.54,91.86,8.68,
                         475650,"Doppler bilatéral",15.08,12.82,2.26,
                         475532,"Epreuve de stress",25.13,21.37,3.76,
                         476210,"Holter",65.23,56.55,8.68};
 
 
Il me met 3 Warning (cité plus haut) par ligne, correspondant je suppose au 3 nombre float que j'initiialise dans chaque ligne.
 
 
Je vois vraiment pas ce qui pose problème!?!

Reply

Marsh Posté le 03-04-2005 à 12:01:32   

Reply

Marsh Posté le 03-04-2005 à 12:17:10    

finch911 a écrit :

j'ai pas mal de warning de ce type lorsque je compile mon programme
"warning C4305: 'initializing' : truncation from 'const double ' to 'float '"
 
typedef struct {
    int numonenclature;
    char intituler [50];
    float montantvipo;
    float montantao;
    float ticketmod;
} examen;


Passe tout en 'double'. C'est le type natif pour les calculs en virgule flottante. 'float' n'est utilise que pour réduire la taille des gros volumes de données (avec une perte de précision, bien sûr).


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 03-04-2005 à 12:44:06    

Merci pour ta réponse! Ca marche!

Reply

Marsh Posté le 03-04-2005 à 14:03:47    

Emmanuel Delahaye a écrit :

Passe tout en 'double'. C'est le type natif pour les calculs en virgule flottante. 'float' n'est utilise que pour réduire la taille des gros volumes de données (avec une perte de précision, bien sûr).


bof, moi je passe tout en float. C99 autorise que les calculs soit fait en float ... et c'est significativement plus rapide sur mes applications.
 
Mais la vrai question était : comment écrire une constante littérale ?
 
3.14 un double
3.14f un float

Reply

Marsh Posté le 05-04-2005 à 03:47:10    

Tout à fait, les float ne sont pas à bannir. C'est plus rapide sur certaines architectres. AMD par exemple recommande d'utiliser float plutôt que double pour la rapidité.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed