IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Sommer un int et un float


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Points : 83
    Points
    83
    Par défaut Sommer un int et un float
    Bonjour,

    bah qu'est-ce que ça donne quand on fait la somme entre un int et un float et qu'on mette le résultat dans un int ou un float ?

    Merci

  2. #2
    Membre averti Avatar de Tux++
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 281
    Points : 379
    Points
    379
    Par défaut
    bonjour,

    par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            int i = 1;
            float f = 3.0;
            int j = f + i;
            float l = f + i;
            printf("int %d \n",j);
            printf("float %f \n",l);
    te donnera:

    int 4
    float 4.000000
    Certified Oracle Advanced PL/SQL Professional
    Certified Oracle APEX Expert
    Certified Oracle SQL Expert

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Mettre la somme dans un "int" va tronquer la partie décimale de la somme.

    Mettre la somme dans un "float" va ... beh faire comme une somme normale :p

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Points : 83
    Points
    83
    Par défaut
    Merci pour les précisions !

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    L'entier va être converti en float (avec peut être une perte de précision), la somme va être effectuée et donner un résultat float.
    Si le résultat est mis dans un entier, la partie décimale va être abandonnée et la partie entière placée dans l'entier.
    Si la partie entière ne tient pas dans l'entier, le résultat est indéfini.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par diogene Voir le message
    L'entier va être converti en float ...
    Est il possible d'imaginer qu'un entier (5 par exemple) mis dans un float devienne 4.9999999 du fait de la représentation binaire interne du flottant.

    Enfin mon exemple n'est peut être pas valable pour 5 mais peut être pour d'autres entiers.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Est il possible d'imaginer qu'un entier (5 par exemple) mis dans un float devienne 4.9999999 du fait de la représentation binaire interne du flottant.

    Enfin mon exemple n'est peut être pas valable pour 5 mais peut être pour d'autres entiers.
    Tu peux mettre en place des solutions simple qui vont te permettre de pouvoir gérer un petit imprévu comme celui-ci.

    Une simple ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    monInt=5;
    monIntEnFloat = monInt;
    if(monIntEnFloat >= 4.5) monIntEnFloat = 5.0;
    De cette façon tu enlève les "probables" désagrément que tu viens de cités, Ram

    (Enfin je sais bien que je t'apprend rien, mais il est vrai que ce que tu viens de dire il faut y penser)

  8. #8
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Est il possible d'imaginer qu'un entier (5 par exemple) mis dans un float devienne 4.9999999 du fait de la représentation binaire interne du flottant.

    Enfin mon exemple n'est peut être pas valable pour 5 mais peut être pour d'autres entiers.
    Tant que les entiers sont représentables sur le nombre de bits de la mantisse +1, pas de problème. Au dela, le résultat reste un entier mais n'est plus toujours exact. (si valeur de l'entier est dans la plage des valeurs représentables par le flottant)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    d'où le fait d'intialiser un flottant avec un .0 si on veut être sûr qu'il correspond à un entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    float f ;
     
    f = 5. ; /* na garantit rien sur les décimales */
     
    f= 5.0 ; /* garanti que les décimales signifactives sont à zéro */
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  10. #10
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    d'où le fait d'intialiser un flottant avec un .0 si on veut être sûr qu'il correspond à un entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    float f ;
     
    f = 5. ; /* na garantit rien sur les décimales */
     
    f= 5.0 ; /* garanti que les décimales signifactives sont à zéro */
    Je pense que cela ne change rigoureusement rien.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    crois-tu, ou es-tu sûr ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  12. #12
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    J'en suis sûr
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. convertir varchar en int et en float
    Par Armorio dans le forum Requêtes
    Réponses: 0
    Dernier message: 30/05/2014, 16h36
  2. Réponses: 4
    Dernier message: 12/05/2010, 21h18
  3. Comment bien entrer un int ou un float
    Par Invité1 dans le forum C
    Réponses: 5
    Dernier message: 25/08/2008, 01h56
  4. passer d'un int to curr (float)
    Par Ludo_360 dans le forum Delphi
    Réponses: 18
    Dernier message: 19/06/2007, 09h55
  5. [Débutant][Math] float int arondi bizarre
    Par yolepro dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 27/04/2004, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo