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

 Delphi Discussion :

Arrondir un réel en entier


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Arrondir un réel en entier
    bonjour
    au cours de realisation de mon interface je suis tombé sur ce probleme et j'ai pas pu voir clair ou suis je trompé
    je calcule un inconnu 'N2' reel .apres je dois le reutiliser comme entier (faut l'arrondir) j'ai fait plusieur chose dont cette manip
    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
    var  N1,N:integer ; Lf_eff ,N2,Lf: real;
     
    begin
    N1:=strtoint (edit1.text);
    Lf_eff:=strtofloat (edit2.text);
    Lf:=strtofloat(form13.edit5.Text);
    N2:=Lf/(Lf_eff);
    Round(N2):=Integer;
    N:=N2-N1;
        if N<5 then
      begin
            N:=N1;
        edit3.text:=inttostr(N)
      end
        else
        begin
    Edit1.Text:='' ;
    Edit2.Text:='' ;
        end
    voici l'erreur affichée
    [Erreur] Unit16.pas(49): La partie gauche n'est pas affectable
    [Erreur] Unit16.pas(50): Opérateur ou point-virgule manquant
    [Erreur fatale] Project1.dpr(22): Impossible de compiler l'unité utilisée 'Unit16.pas'
    mais ca n'a pas marché .j'ai essayé de voir avec simpleroundto mais meme chose
    ou est mon erreur a votre avis
    merci pour votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Round(N2):=Integer;

    CA VEUT DIRE QUOI ?

    integer est un mot reservé et il n'est pas déclaré( ni a déclarer) :-)

    Je me trompe peut etre .

    A+

    Pierre

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    moi j'ai raisonné comme suite
    en cliquant f1 sur round j'ai eu la syntax de la fonction et je l'ai pris comme arrondir le reel N2 en integer

  4. #4
    Membre habitué Avatar de neodelphi2007
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 179
    Points
    179
    Par défaut
    Bonjour,

    Voila ce que je te propose:

    1- Effectivement integer est un mot reservé et il ne peut pas être une valeur à affecté mais peut servir pour un transtypage par exemple (V:=integer(A) )

    2- Ensuite il faut remplacer la ligner "Round(N2):=Integer;"
    par la ligne "N:=Round(N2);"

    3- Puis pour transformé un REAL en un entier il faut utiler la fonction TRUNC,
    N:=Trunc(N2)-N1;


    Le code correct à priori:
    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
     
     
        var
        N1,N:integer ; Lf_eff ,N2,Lf: real;
     
    begin
        N1:=strtoint (Edit1.text);
        Lf_eff:=StrToFloat(Edit2.text2);
        Lf:=strtofloat(form13.edit5);
        N2:=Lf/(Lf_eff);
        N:=Round(N2);
        N:=Trunc(N2)-N1;
        if N<5
        then begin
              N:=N1;
              text:=inttostr(N)
            end
        else
            begin
              Edit1.Text:='' ;
              Edit2.Text:='' ;
            end
    end;

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gai,
    Citation Envoyé par neodelphi2007 Voir le message
    3- Puis pour transformé un REAL en un entier il faut utiler la fonction TRUNC,
    N:=Trunc(N2)-N1;
    On peut utiliser Round ou Trunc, l'effet étant différent quand même :

    - Avec Round, on arrondi au plus proche, par exemple
    1.49 donnera 1
    1.51 donnera 2

    - Avec Trunc, on prend l'entier immédiatement inférieur, donc
    avec les deux valeurs utilisées ci-dessus, on obtiendra 1
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Pour arrondir rien de mieux que simpleroundto de l'unité math.
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hai,
    Citation Envoyé par Pascal Jankowski Voir le message
    Pour arrondir rien de mieux que simpleroundto de l'unité math.
    Je ne suis pas d'accord quand il s'agit de calculer un simple arrondi au sens classique, c'est à dire quand on n'a pas besoin de tous les calculs supplémentaires impliqués par simpleRoundTo.
    Si les cons volaient, il ferait nuit à midi.

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    En plus de :

    - trunc() : qui renvoie la partie entière
    - round() : qui renvoie l'arrondi vers l'entier le plus proche ou l'entier pair si la première décimale est un '5',

    on dispose également de :

    - floor() : qui renvoie l'arrondi "plancher"
    - ceil() : qui renvoie l'arrondi "plafond"

    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    merci pour vos reponse
    j'ai utilisé round() mais je peux pas dire si ca marche ou pas j'attend que mon programme soit tout fonctionnel

Discussions similaires

  1. Arrondir un float à l'entier supérieur
    Par The-msx dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 22/10/2012, 10h44
  2. Transformer un réel en entier dans une macro ImageJ
    Par bourique dans le forum ImageJ
    Réponses: 0
    Dernier message: 06/08/2010, 15h14
  3. ne pas arrondir un réel ?
    Par sandokhane dans le forum Débuter
    Réponses: 5
    Dernier message: 21/03/2009, 13h48
  4. Arrondir un réel à x
    Par sami_c dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 12/06/2008, 14h39
  5. convertir réel _ entier
    Par iamhere dans le forum C++
    Réponses: 6
    Dernier message: 02/04/2006, 16h54

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