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 :

Type entier vers flottant.


Sujet :

C++

  1. #1
    Invit�
    Invit�(e)
    Par d�faut Type entier vers flottant.
    Bonjour,
    Quelqu�un pourrait m�expliquer comment modifier cette constante pour que le r�sultat affiche un arrondie au plus proche � 2 chiffres apr�s la virgule ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    //Extrapolation de 173° à 180° = 2559,306358381503
     
    const int T180=520+(((2480-520)/173)*180);
    Ici 2559,31

    Merci pour votre aide.

  2. #2
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    il faut relire tes cours sur la notion de type int, float, ...

    Et une autre pr�cision , en C et C++, les op�rations (+, *, / et -) prennent le type le "plus large" pour calculer.
    Donc int/ int donne une division enti�re et non pas une division flottante

    mais �videmment, il faut que ta variable puisse accepter le r�sultat sans troncature.


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
        const int T180 = 520+(((2480-520)/173)*180);
        const float T180_01 = 520+(((2480-520)/ (float) 173)*180);
        const float T180_02 = 520+(((2480-520)/ 173.0)*180);
     
        std::cout << "value : " << T180 << ", value : " << T180_01 << ", value : " << T180_02 << std::endl;

  3. #3
    Invit�
    Invit�(e)
    Par d�faut
    J�avoue �tre un peu largu�, auriez-vous un petit exemple concret ?

  4. #4
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 644
    Par d�faut Illustration
    Bonjour,

    Ce qu'explique Foetus peut s'illustrer ainsi :

    • 7/3 donne 2 (int /int -> int)
    • 7.0/3 ou 7/3.0 ou 7.0/3.0 donnent 2.3333... (float/int -> float, int/float -> float, et bien s�r float/float -> float)

    Salutations

  5. #5
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    En m�me temps, je ne sais pas quoi dire entre @NeriXs qui passe plus de temps � poster au lieu de mettre des nombres flottants/ r�els partout (quitte � cr�er autant de variables que de valeurs fixes) et le fait qu'il (et @Guesset apparemment ) ne sache pas utiliser la balise spoiler (divulg�cher en bon fran�ois, il faut appuyer sur le bouton montrer � droite)

  6. #6
    Invit�
    Invit�(e)
    Par d�faut
    Citation Envoy� par foetus Voir le message
    En m�me temps, je ne sais pas quoi dire entre @NeriXs qui passe plus de temps � poster au lieu de mettre des nombres flottants/ r�els partout (quitte � cr�er autant de variables que de valeurs fixes
    D�sol�, j'essaie toujours de mettre la charrue avant les b�ufs

    Citation Envoy� par foetus Voir le message
    et le fait qu'il (et @Guesset apparemment )
    L�, je n'ai pas tous compris.

    -------------------------------------------------------------------------------------

    Pour en revenir � mon code!

    Les valeurs affich�es sont bonnes:

    Bienvenue sur le moniteur s�rie.
    L'extrapolation � 180�, de 173� entre la but�e mini: 520 �S et la but�e maxi: 2480 �S est �gale �: 2559.31 �S.
    1� est �gale � 11.33 �S.

    0� = 520.00 �S
    1� = 531.33 �S
    173� = 2480.00 �S
    180� = 2559.31 �S
    Je ne suis vraiment pas s�r que ma gestion soit faite dans les r�gles de l'art.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #include <Servo.h>
     
    const byte ServoPin = 10;
    const int LowerPos = 520 ; //Butée Mini du servo
    const int UpperPos = 2480 ; //Butée Maxi du servo
    const int Range = 173 ; //Plage de déplacement en degrés
    const float T180 = LowerPos + (((float)(UpperPos - LowerPos) / Range) * 180) ; //Extrapolation à 180° = 2559,306358381503
    const float UsRange = (T180 - LowerPos) / 180 ; // 1° = 11,32944444444444 µS
     
    Servo myservo;  // create servo object to control a servo
    void setup() {
      Serial.begin(115200);
      myservo.attach(ServoPin, LowerPos, T180);
      Serial.println("Bienvenue sur le moniteur série.");
     
      Serial.print("L'extrapolation à 180°, de ");
      Serial.print(Range);
      Serial.print("° entre la butée mini: ");
      Serial.print(LowerPos);
      Serial.print(" µS et la butée maxi: ");
      Serial.print(UpperPos);
      Serial.print(" µS est égale à: ");
      Serial.print (T180);
      Serial.println(" µS.");
     
      Serial.print("1° est égale à ");
      Serial.print(UsRange);
      Serial.println(" µS.");
      Serial.println();
     
    }
     
    void loop() {
      int PosDeg = Serial.parseInt(); // PosDeg = la position saisie dans le moniteur série de 0 à 173°
      float PosUs = LowerPos + (PosDeg * UsRange); // degré en µS
      if (Serial.available() > 0) {
        Serial.print(PosDeg);
        Serial.print("° = ");
        Serial.print(PosUs,2);
        Serial.println(" µS");
     
      }
        clearSerialBuffer();  
    }
     
    void clearSerialBuffer() {
      //clear serial buffer (but do nothing with it)
      while (Serial.available())
      {
        Serial.read();
      }
    }

  7. #7
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  8. #8
    Invit�
    Invit�(e)
    Par d�faut
    Lire et vraiment tous comprendre ce n'est pas toujours �vidant.
    Je ne viens pas du monde de la programmation et n'ai pas la pr�tention d'�tre programmeur. Je joue plus occasionnellement avec le langage.
    Je manque de rigueur et ne sais pas toujours employer les bons termes pour trouver les m�thodes � utiliser.
    Alors me voil� avec mon ind�licatesse, ma lourdeur, je ne percute pas toujours du premier coup! Et ai bien conscience que je devrais passer par une phase d'apprentissage et de recherche au pr�alable.
    Mais gr�ce � vous j'arrive � faire quelque petit truc sympa.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [Python 3.X] conversion d'entiers vers un type BYTE
    Par floLD dans le forum G�n�ral Python
    R�ponses: 5
    Dernier message: 25/08/2017, 11h01
  2. R�ponses: 3
    Dernier message: 18/08/2014, 17h56
  3. R�ponses: 5
    Dernier message: 21/07/2011, 09h53
  4. Passage du type integer vers varchar sur cl� primaire
    Par GMI dans le forum Bases de donn�es
    R�ponses: 2
    Dernier message: 07/01/2005, 09h09
  5. [LG]type entier
    Par fakroun dans le forum Langage
    R�ponses: 3
    Dernier message: 20/11/2003, 23h39

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