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 :

C++ boost et date


Sujet :

C++

  1. #21
    Membre confirmé
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut fonction partie entière
    Bonjour,

    je viens d'implémenter ce que vous m'avez conseillé à partir de boost.

    A savoir ce qui est à la page :

    http://www.boost.org/doc/libs/1_52_0...ing/round.html

    J'ai pris l'exemple de 4.5

    et le résultat de la partie entière est 5 , ce qui est faux.

    J'ai essayé toutes les variantes, et ça ne donne pas 4.

    Comment résoudre ce problème ?

    Où puis-je trouver la librairie de boost qui me permettrait d'obtenir la partie entière(celle qui me donnerait 4 précisément ?

    D'avance merci,

    cordialement

  2. #22
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par matlab_ Voir le message
    J'ai pris l'exemple de 4.5

    et le résultat de la partie entière est 5 , ce qui est faux.

    J'ai essayé toutes les variantes, et ça ne donne pas 4.

    Comment résoudre ce problème ?

    Où puis-je trouver la librairie de boost qui me permettrait d'obtenir la partie entière(celle qui me donnerait 4 précisément ?

    D'avance merci,

    cordialement
    https://fr.wikipedia.org/wiki/Arrondi

    Pour la partie entière d'un nombre à virgule (float / double), il suffit de le caster en int.
    ou plus proprement: std::floor

  3. #23
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Attention, pour les nombres négatifs, la partie entière n'a pas la même définition en math et en C++.

    Si tu veux E(-4.1) == -5, il va falloir te le coder toi même.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #24
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Attention, pour les nombres négatifs, la partie entière n'a pas la même définition en math et en C++.

    Si tu veux E(-4.1) == -5, il va falloir te le coder toi même.
    std::floor fait bien ça chez moi. Ça me surprendrai que tu me dises que ce n’est pas standard et garanti.

    par contre, effectivement, le cast simple (int) -4.1 renvoie -4.

  5. #25
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    effectivement un cast en int c'est équivalent à std::trunc, donc std::trunc(4.1) == 4 et std::trunc(-4.1) == -4 (j'y avait pas pensé aux nombres négatifs.

    Mais std::floor(4.1) == 4 et std::floor(-4.1) == -5 (entier le plus proche inférieur ou égal à la valeur)

  6. #26
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    std::floor fait bien ça chez moi. Ça me surprendrai que tu me dises que ce n’est pas standard et garanti.

    par contre, effectivement, le cast simple (int) -4.1 renvoie -4.
    floor est standard et garanti.
    Le cast pouvait te retourner -5 ou -4 en C++98, et a pour obligation de retourner -4 en C++11 (je ne sais pas si les compilateurs sont à jour).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #27
    Membre confirmé
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Bonjour,
    j'espère que vous allez bien.

    Pour ma part,

    j'avais bien

    qui en principe devrait permettre d'utiliser : pourtant, n'était accepté au sein d'un programme ccp, si j'ajoute en en-tête l'expression

    Est-ce normal ?

Discussions similaires

  1. Compiler Boost 1.35.0 (filesystem et date)
    Par djkamikaz dans le forum Boost
    Réponses: 41
    Dernier message: 07/04/2008, 11h41
  2. Heritage de boost::gregorian::date
    Par dhoorens dans le forum Boost
    Réponses: 3
    Dernier message: 05/02/2008, 23h52
  3. Réponses: 3
    Dernier message: 06/05/2002, 18h24
  4. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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