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 :

question débutant variables


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut question débutant variables
    Bonjour je débute (2jours) en programmation et j'ai choisi C pour commencer
    Après avoir écrit le premier programme pour capter scanf et print je me pose la question de l'utilité de int alors que float accepte les nombres entiers également.

    Pouvez vous m'eclairer un peu ?

    Merci !!!!

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    La précision : 3 dans un float sera peut-être égal à 3.000000000001.
    La vitesse : les calculs avec des flottants sont généralement beaucoup plus lents que les calculs avec les entiers.
    La sémantique : si tu travailles avec des entiers, tu utilises int. Si tu travailles avec des flottants, tu utilises float.

    j'ai choisi C pour commencer
    C'est un choix ^^ Sache que c'est un langage assez compliqué, avec beaucoup de zones "d'ombre", alors ne te décourage pas !

    Si tu cherches un langage plus simple, tu pourras un de ces jours utiliser Python. Mais ceci est une autre histoire.

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour ta réponse rapide et claire
    Je vais essayer de pas me décourager ...

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Si tu cherches un langage plus simple, et quasiment tout aussi puissant, tu pourras un de ces jours utiliser Python
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut


    Je parlais de précision des flottants hier, en voici un exemple en Python (sauf erreur en math de ma part, mais Sve@r nous le dire) :
    >>> from math import log, log10 # log() est le log neperien
    >>> log10(100)
    2.0
    >>> log(100) / log(10)
    2.0
    >>> log10(1000)
    3.0
    >>> log(1000) / log(10)
    2.9999999999999996

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Je parlais de précision des flottants hier, en voici un exemple en Python (sauf erreur en math de ma part, mais Sve@r nous le dire) :
    Oh on a plus simple en tapant simplement des nombres et en voyant comment ils sont convertis
    >>> 2.96
    2.96
    >>> 2.123
    2.1230000000000002
    Ce problème est connu et il est inhérent à la façon dont la partie décimale d'un nombre est convertie en binaire. Pour ce, on la multiplie par 2 et on enlève ce qui dépasse "1". Et on s'arrête quand la partie restante tombe à zéro.
    Ce qui peut arriver... (avec 0.625)
    0.625 x 2 = 1.25 => on garde "1" et on laisse 0.25
    0.25 x 2 = 0.5 => on garde "0" et on laisse 0.5
    0.5 x 2 = 1.0 => on garde "1" et il reste 0 => c'est fini => 0.625 se codera en binaire 101

    ... tout comme ne pas arriver (avec par exemple 0.33)
    0.33 x 2 = 0.66 => 0
    0.66 x 2 = 1.32 => 1
    0.32 x 2 = 0.64 => 0
    0.64 x 2 = 1.28 => 1
    0.28 x 2 = 0.56 => 0
    0.56 x 2 = 1.12 => 1
    0.12 x 2 = 0.24 => 0
    0.24 x 2 = 0.48 => 0
    0.48 x 2 = 0.96 => 0
    0.96 x 2 = 1.92 => 1
    0.92 x 2 = 1.84 => 1
    0.84 x 2 = 1.68 => 1
    0.68 x 2 = 1.36 => 1
    0.36 x 2 = 0.72 => 0
    0.72 x 2 = 1.44 => 1
    0.44 x 2 = 0.88 => 0
    0.88 x 2 = 1.76 => 1
    0.76 x 2 = 1.32 => 1
    0.32 x 2 = 0.64 => 1
    A partir de là on voit que ça ne peut plus s'arrêter. Et donc 0.33 se codera en binaire 101000111101011 mais 101000111101011 décodé ne fera pas exactement 0.33
    >>> 0.33
    0.33000000000000002
    Et si on ajoute en plus le découpage en mantisse et exposant...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Question débutant variables
    Par hilibili dans le forum Général Python
    Réponses: 3
    Dernier message: 24/08/2013, 07h44
  2. Question débutant ...
    Par Lypertrophie dans le forum Débuter
    Réponses: 4
    Dernier message: 25/10/2005, 19h00
  3. [débutante] Variable long
    Par monia dans le forum MFC
    Réponses: 5
    Dernier message: 05/07/2005, 17h33
  4. Question nommage variable
    Par Emilie L dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/05/2005, 18h04
  5. Réponses: 3
    Dernier message: 26/05/2004, 23h03

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