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 :

arrondi apres virgule


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut arrondi apres virgule
    Bonjour,
    J'ai quelques fois un déséquilibre sur ma tva à cause d'un mauvais calcule des arrondi, par exemple :
    ht = 73 378.80
    tva = 5 136.52
    ttc = j'ai 78 515.31 contre 78 515.32

    alors comment faire pour fixé ce problème!?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Le montant HT et la TVA sont-ils des champs renseignés à la main ou ils sont issus d'un calcul sur lequel tu fais déjà un arrondi ?

    Si tu as un peu de code, n'hésites pas à le poster car comme ça, on ne pourra pas vraiment dire où se situe le problème

  3. #3
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut


    Dans ma boule de cristal, je viens de voir qu'en amont tu te bases sur un nombre de décimales > 2.

    En ces conditions, normal que la base de l'arrondi soit répercuté sur ton résultat, qui doit au passage être raboté à seulement deux décimales.

    Bon... encore un p'tit coup de chiffon à ma boule

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    Voila le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    data.add('60000000'+';'+fieldbyname('cpt_compte').asstring+';;'+'D'+';'+FormatFloat('0.00',fieldbyname('MTHT').AsFloat)+';'+fieldbyname('ACH_DATE_DE_LA_PIECE').asstring+';'+fieldbyname('ACH_NUMERO').AsString+';'+'0'+';;'+'G'+';'+fieldbyname('CLS_CLASSIFICATION').asstring+' '+fieldbyname('ART_LIBELLE_COURT').asstring);
     
     data.add('60000000'+';'+fieldbyname('cpt_compte').asstring+';;'+'D'+';'+FormatFloat('0.00',fieldbyname('MTHT').AsFloat)+';'+fieldbyname('ACH_DATE_DE_LA_PIECE').asstring+';'+fieldbyname('ACH_NUMERO').AsString+';'+'1'+';'+fieldbyname('ZST_SECTION_ANALYTIQUE').asstring+'-'+fieldbyname('CLS_CODE').asstring+';'+'A'+';'+fieldbyname('CLS_CLASSIFICATION').asstring+' '+fieldbyname('ART_LIBELLE_COURT').asstring);
     
     data.add('60000000'+';'+fieldbyname('TVA_CODE').asstring+';;'+'D'+';'+FormatFloat('0.00',fieldbyname('MTTVA').AsFloat)+';'+fieldbyname('ACH_DATE_DE_LA_PIECE').asstring+';'+fieldbyname('ACH_NUMERO').AsString+';'+'0'+';;'+'G'+';'+fieldbyname('CLS_CLASSIFICATION').asstring+' '+fieldbyname('ART_LIBELLE_COURT').asstring);
     
     data.add('60000000'+';'+'4417000000'+';'+fieldbyname('frn_code').asstring+';'+'C'+';'+FormatFloat('0.00',fieldbyname('MTHT').AsFloat+fieldbyname('MTTVA').AsFloat)+';'+fieldbyname('ACH_DATE_DE_LA_PIECE').asstring+';'+fieldbyname('ACH_NUMERO').AsString+';'+'0'+';;'+'G'+';'+fieldbyname('CLS_CLASSIFICATION').asstring+' '+fieldbyname('ART_LIBELLE_COURT').asstring);
    Merci

  5. #5
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Regarde avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...FormatFloat('#.##',field...
    Sinon donne ton taux de TVA

    @+

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    Pareil,
    Le taux de tva est : 20%

    Merci

  7. #7
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Alors je te conseillerais d'oublier tout provisoirement ton appli et de simplement faire une petite maquette de test toute basique, mais avec bien entendu le FormatFloat(...)

    Bien souvent l'on s'entête sur de fausses bases.

    Alors ça donne pareil ?

    @+

  8. #8
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    Citation Envoyé par ameno_123 Voir le message
    Bonjour,
    J'ai quelques fois un déséquilibre sur ma tva à cause d'un mauvais calcule des arrondi, par exemple :
    ht = 73 378.80
    tva = 5 136.52
    ttc = j'ai 78 515.31 contre 78 515.32

    alors comment faire pour fixé ce problème!?

    Merci
    Bonjour,
    pour les calculs financiers, pour ne pas tomber dans les erreurs d'arrondis, il est préférable d'utiliser le type de données CURRENCY au lieu des réels simples ou double précision.
    Le type Currency est spécialemend adapté aux calculs financiers et gère convenablement le problème d'arrondi.

    Cordialement

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    Le même problème,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrToStrF(fieldbyname('MTHT').AsCurrency+fieldbyname('MTTVA').AsCurrency,ffFixed, 2
    MTHT = 73378.80
    MTTVA = 5136.52

    Normalement je dois avoir en MTTC= 78515.32 alors avec mon code j'ai = 78515.31

  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
    essai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CurrToStrF(fieldbyname('MTHT').AsFloat+fieldbyname('MTTVA').AsFloat,ffFixed, 2

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 754
    Points : 13 338
    Points
    13 338
    Par défaut
    Es-tu sûr qu'il n'y a pas un Trunc au remplissage de la DB ?

    ps: HT=73378.80, TVA=5136.52, Taux = 20%

  12. #12
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    J'avais recommandé plus haut ceci :

    Alors je te conseillerais d'oublier tout provisoirement ton appli et de simplement faire une petite maquette de test toute basique, mais avec bien entendu le FormatFloat(...)
    Mais...

    Car souvent en "réduisant" là ou ça fait mal, la solution arrive naturellement.

    Je parle sans passer par un rapport de BDD. Non un code hyper basic afin de se rendre compte que ça coince ailleurs.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    ca marche avec cet exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    label1.Caption:=FormatFloat('#.##',73378.80+5136.52);
    J'ai 78515.32 bien arrondi

  14. #14
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Oki, voilà une nouvelle base solide de référence et d'appui.

    Mais en intégration sur ton apli, ça donne quoi, comme auparavant ?

    @+

  15. #15
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par ameno_123 Voir le message
    ca marche avec cet exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    label1.Caption:=FormatFloat('#.##',73378.80+5136.52);
    J'ai 78515.32 bien arrondi
    C'est normal. A mon avis, tes valeurs exactes sont, par exemple :

    HT = 73378.795 arrondi à 73378.80
    TVA = 5136.515 arrondi à 5136.52

    TTC = HT+TVA = 78515.310 donc l'affichage arrondi 78515.31 est bon.

    Le truc, c'est qu'il faudrait arrondir tes valeurs avant de les additionner dans le calcul TTC. Ainsi t'aurais TTC = 73378.80+5136.52 = 78515.32

    Bonne chance

  16. #16
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    C'est ce dont j'ai vu en ma boule de cristal, et écrit en message n°3.

    Mais encore aucune précision en ce sens de la part de son posteur

    @+

Discussions similaires

  1. [BigDecimal][nbDigits] conversions chiffres apres virgule
    Par jeb001 dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 11/10/2006, 14h08
  2. arrondi apres division
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/08/2006, 16h33
  3. [debutant] limiter nombre apres virgule
    Par tony_big_guy dans le forum Langage
    Réponses: 6
    Dernier message: 11/01/2006, 14h29
  4. problème d'arrondi à 2 chiffres après virgule
    Par nerick dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2006, 17h26
  5. extraire 2 chiffres après virgule ?
    Par nerick dans le forum C
    Réponses: 2
    Dernier message: 13/12/2002, 17h10

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