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++Builder Discussion :

Arrondir un double


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 37
    Points
    37
    Par défaut Arrondir un double
    Je veux faire un rondement a un chiffre, j’ai essayé avec la fonction Round mai en C++ il me dit fonction non définie alors aider moi svp

    Exemple double a = 0.0002214 alors sera après rondement a= 0.0003 et quelle fonction utiliser pour prendre juste 3 ou 4 chiffre après la virgule

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par kheira Voir le message
    Je veux faire un rondement a un chiffre, j’ai essayé avec la fonction Round mai en C++ il me dit fonction non définie alors aider moi svp

    Exemple double a = 0.0002214 alors sera après rondement a= 0.0003 et quelle fonction utiliser pour prendre juste 3 ou 4 chiffre après la virgule



    #include <math.h>

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 37
    Points
    37
    Par défaut
    j'ai fait l'include mai ça na pas marché ?? je ne c'est pas pourquoi

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Il n'y a pas de fonction "Round" que ce soit en C ou en C++, mais tu peux facilement en créer. Prends ce code de la FAQ C par exemple. En C++, tu remplaces juste <math.h> par <cmath> (sans oublier using namespace std ...).

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    Parce que c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    round(a)
    et pas
    Round(a)
    Sachant que ce que tu cherche c'est la fonction ceil(double x).

  6. #6
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Que ce soit Round ou round, cette fonction, et plus généralement ce genre de fonction, n'existe ni en C, ni en C++. T'as également l'air de confondre ceil et floor. Je ne vois pas comment utiliser ceil pour écrire une fonction arrondi, à moins d'implémenter floor en utilisant ceil ...

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <stdio.h>
    #include <math.h>
     
    int main(void)
    {
      for(double a=12;a<13;a+=0.1)
        printf("round of  %.1lf is  %.1lf\n", a, round(a));
      return 0;

    Citation Envoyé par Melem Voir le message
    Que ce soit Round ou round, cette fonction, et plus généralement ce genre de fonction, n'existe ni en C, ni en C++. T'as également l'air de confondre ceil et floor. Je ne vois pas comment utiliser ceil pour écrire une fonction arrondi, à moins d'implémenter floor en utilisant ceil ...

  8. #8
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 906
    Points : 2 134
    Points
    2 134
    Par défaut
    Un truc dans le genre quoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double valeur=0.0002214; // valeur à arrondir
    int precision=4; // nombre de décimal
    double valeurArrondie=ceil(valeur*pow10(precision))/pow10(precision);
    valeurArrondie sera = à 0.0003

    Sinon, puisque l'on est en Builder C++, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    double valeur=0.0002214; // valeur à arrondir
    int precision=-4; // nombre de décimal
    TFPURoundingMode roundMode=GetRoundMode();
    SetRoundMode(rmUp); // Passe le FPU en mode "ceil"
    double valeurArrondie=RoundTo(valeur,precision);
    SetRoundMode(roundMode); // Remet le FPU dans sa configuration d'origine

  9. #9
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par dz_robotix Voir le message
    !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <stdio.h>
    #include <math.h>
     
    int main(void)
    {
      for(double a=12;a<13;a+=0.1)
        printf("round of  %.1lf is  %.1lf\n", a, round(a));
      return 0;
    J'ai pas vu qu'on était dans le forum BCB, mais cette fonction est en effet spécifique à Borland (et peut-être aussi disponible dans d'autres implémentations, mais j'en doute). Ce n'est pas une fonction C ou C++ standard, c'est ce que je n'ai jamais arrêté de répéter. Ton code n'est donc pas portable (chez moi, il ne compile tout simplement pas ...) mais répond au moins, en effet, au besoin spécifique de ce cas-ci.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 37
    Points
    37
    Par défaut
    ce code marche parfetement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    double valeur=0.0002214; // valeur à arrondir
    int precision=4; // nombre de décimal
    double valeurArrondie=ceil(valeur*pow10(precision))/pow10(precision);
    merci bien

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    Salut,

    pour ce genre d'arrondi, j'utilise RoundTo(taValeur, nbreDeChiffre) qui existe bien, il suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <math.hpp>
    et non pas

    Voila , a +

  12. #12
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 906
    Points : 2 134
    Points
    2 134
    Par défaut
    Citation Envoyé par Thorgal100 Voir le message
    Salut,

    pour ce genre d'arrondi, j'utilise RoundTo(taValeur, nbreDeChiffre) qui existe bien, il suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <math.hpp>
    et non pas

    Voila , a +
    Oui c'est ce que j'avais indiqué un peu plus haut mais à condition de bien positionner le Mode avec SetRoundMode (car la personne voulait arrondir à la valeur supérieure)

    Nirgal76

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

Discussions similaires

  1. Arrondir un Double
    Par SpeedOverflow dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 31/08/2011, 20h45
  2. Arrondir un double
    Par arcanis dans le forum Débuter
    Réponses: 8
    Dernier message: 07/11/2009, 18h36
  3. arrondir un double
    Par mkachakh dans le forum Général Java
    Réponses: 1
    Dernier message: 27/02/2008, 12h08
  4. Comment arrondir un Double à l'excès ?
    Par vitch8 dans le forum Langage
    Réponses: 3
    Dernier message: 17/01/2008, 10h39
  5. arrondir reel double MSHFLEXGRID
    Par totoche dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 27/09/2006, 16h27

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