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 :

Problème de décimales


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut Problème de décimales
    Bjr à tous,
    Plusieurs champs édit reçoivent les résultats de calculs en float.
    Je ne souhaite que 2 décimales dans ces champs.
    Voici le bout de code pour le formatage d'un champ:
    Edit43.Text:=FloatToStr(MaintMonoTotalGeneralHTVA);
    FormatFloat('#0,##', MaintMonoTotalGeneralHTVA);
    Malgré cela, les champs contiennent toujours beaucoup de chiffres après la virgule!
    SysUtils est bien déclaré en Uses
    Que se passe-t-il donc? Je ne suis pas un pro bien sûr!
    N'ai rien trouvé dans le forum pour m'éclairer.

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 812
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 812
    Points : 13 527
    Points
    13 527
    Par défaut
    La "," est le séparateur des milliers. Le "." est pour les décimales

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormatFloat('#,##0.00', MaintMonoTotalGeneralHTVA);

  3. #3
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    J'avais trouvé cette petite subtilité dans le forum mais cela ne doit pas être cela car même en changeant le résultat n'est pas correct.
    N'oublierais-je pas une déclaration quelconque? Bien que je n'ai pas d'erreur à la compilation!

    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 812
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 812
    Points : 13 527
    Points
    13 527
    Par défaut
    C'est pourtant la fonction à utiliser.
    Maintenant FormatFloat ne va pas tronquer MaintMonoTotalGeneralHTVA, mais renvoyer une chaîne mise en forme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit43.Text := FormatFloat('#,##0.00', MaintMonoTotalGeneralHTVA);
    Pour arrondir la valeur à deux décimales:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaintMonoTotalGeneralHTVA := Round(MaintMonoTotalGeneralHTVA *100) /100;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    uses Math;
     
    MaintMonoTotalGeneralHTVA := RoundTo(MaintMonoTotalGeneralHTVA, -2);
    //ou
    MaintMonoTotalGeneralHTVA := SimpleRoundTo(MaintMonoTotalGeneralHTVA);

  5. #5
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Bizarre bizarre,
    Rien ne réagit comme souhaité.
    RoundTo et SimpleRoundTo ne sont pas reconnus en delphi4 mais Round oui.
    Math est bien déclaré mais...
    Faut que je cherche il doit y avoir une subtilité qui m'échappe.
    Merci tout de même.

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 933
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 933
    Points : 15 380
    Points
    15 380
    Par défaut
    Yop !

    Quand je fais simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MaintMonoTotalGeneralHTVA: extended;
    begin
      MaintMonoTotalGeneralHTVA := 987654321 / 100000; // = 9876,54321
      Edit1.Text := FormatFloat('#,##0.00', MaintMonoTotalGeneralHTVA);
    end;
    ça m'affiche impeccablement 9 876,54. Ça semble tout bon, non ?

  7. #7
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Merci à tous,
    Ton insistance Jipété m'a interpellé et permis de trouver ce qu'il manquait... l'affectation du format n'était donnée à rien! Il manquait Edit43.Text
    Mille merci

  8. #8
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 955
    Points
    3 955
    Par défaut
    Bonsoir

    Suite à une petite investigation personnelle récent au sujet de RoundTo, il s'agit d'un appel à une routine du coprocesseur arithmétique qui ne donne pas toujours les résultats attendus. Ceci avec la virgule flottante, c'est possible.

    Cdlt

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

Discussions similaires

  1. [Conception] Problème de décimales Access>PHP
    Par LadyArwen dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 04/01/2006, 15h47
  2. [FLASH MX2004] Problème de décimales
    Par stip dans le forum Flash
    Réponses: 3
    Dernier message: 15/07/2005, 23h45
  3. [FLASH MX] Problème de décimale avec euro
    Par yoda_style dans le forum Flash
    Réponses: 7
    Dernier message: 21/05/2005, 04h14
  4. [CR8] Problème de décimales avec Centura
    Par ccquick dans le forum SAP Crystal Reports
    Réponses: 13
    Dernier message: 05/10/2004, 10h46
  5. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24

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