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

Langage Delphi Discussion :

FormatFloat => résultat arrondi, problème


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 49
    Points
    49
    Par défaut FormatFloat => résultat arrondi, problème
    Bonjour a tous,
    Je développe sous delphi 5 et je calcul des montants de factures.
    Lors de l'utilisation de la fonction FormatFloat d'un nombre par exemple 59,99883 la fonction FormatFloat me renvoi 60,00.
    Comment utiliser cette fonction pour avoir un résultat avec deux chiffre après la virgule sans arrondir le chiffre (59,99)???

    Merci d'avance.

  2. #2
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Vas faire un tour sur les remèdes de notre bon Dr Who

  3. #3
    Invité1
    Invité(e)
    Par défaut
    bonjour
    essaies avec ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    nb:= (int(59.99883*100))/100;
    59.99883 * 100 = 5999.883
    int(5999.883) = 5999
    5999 / 100 = 59.99

    bonne journée

  4. #4
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    pense à utiliser le format currency.

    et avec la fonction Format %.2f il n'y aura pas d'arrondi mais la valeur sera tronquée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var
      V : currency;
      S : string;
    begin
      V := 59.998567
      S := format('%.2f', [V]);
      { ... }
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Merci pour vos réponses, mais:
    sois disant, j'ai un nombre 21650.85. Lorsque j'applique a ce nombre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nb:= (int(21650.85*100))/100;
    le résultat affiché est : 21650.84
    Et lorsque j'applique le format currency avec %.2f pour 21650.85/100 le résultat affiché est 216.51.
    Est ce qu'il ya une solution pour ceci?

    Merci

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Vas faire un tour sur les remèdes de notre bon Dr Who
    ???????????

  7. #7
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    aprés vérification, %.2f, %.2n et %.2m arrondissent la valeur.

    %.2m permet d'afficher les valeurs monétaire.

    pour ne pas arrondir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    uses Math;
     
    { ... }
     
    // au plus bas
    S := format('%.2f',[floor(15.1 * 6.55957 * 100)*0.01]);
    // affiche 99.04
     
    // au plus haut
    S  := format('%.2f',[ceil(15.1 * 6.55957 * 100)*0.01]);
    // affiche 99.05
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup Dr. Who, mais:
    ça arrondi toujours mes valeurs, sois au plus haut, sois au plus bas. Je crois que je devrais penser que c'est la seul solution, et qu'on ne peut pas afficher que deux chiffre après la virgule sans arrondissement.

  9. #9
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    pour la fonction format, le remède... (C'était une boutade...)

    http://deefaze.ftp-developpez.com/de...ion-format.pdf

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Serait il possible que tu montres le bout de code que tu utilises pour le formatage de ta valeur avec FormatFloat, le problème vient peut être du format que tu as défini
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 359
    Points : 3 134
    Points
    3 134
    Par défaut
    Bonjour SamirMember

    tu dois avoir un autre problème, car j'ai essayé avec la fonction Trunc ou la fonction floor et cela fonctionne parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Btn_ArrondiClick(Sender: TObject);
    Var
       Nb1, Nb2 : Extended ;
    begin
       nb1 := StrToFloat(E_Val1.Text) ;
    //   nb2 := trunc(nb1*100)/100 ;
       nb2 := floor(nb1*100)/100 ;
       E_Val2.Text := FloatToStr(nb2) ;
    end;
    par exemple :

    56,7845 ==> 56,78
    56,99999999 ==> 56,99
    45,00000 ==> 45,00

    @+
    Charly

Discussions similaires

  1. [8i][forms 6i] résultat arrondi par EXEC_SQL ?
    Par Magnus dans le forum Oracle
    Réponses: 3
    Dernier message: 13/01/2006, 09h07
  2. Réponses: 3
    Dernier message: 15/07/2005, 17h58
  3. problème avec résultat de recherche multi-critères
    Par audrey_desgres dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 11h00
  4. Problème d'arrondi
    Par ptitsoleil87 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/01/2005, 09h37
  5. problème d'affichge de résultat de requétte
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 7
    Dernier message: 14/03/2004, 15h58

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