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

Bases de données Delphi Discussion :

Arrondir un champ à 2 déc.


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut Arrondir un champ à 2 déc.
    Bonjour à tous,

    Dans l'exemple ci-dessous ; comment faire pour que la valeur du champ MONTANT (champ d'une table dbase numérique à 2 décimaux) renvoi 1.56 et non 1.55.

    Table1.FieldByName('MONTANT').Value:=1.555;

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Essaye un truc genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TFloatField(Table1.FieldByName('MONTANT')).Precision := 2;
    Ton problème est que le champ est tronqué dans la Table (surement paradox) au lieu d'être arrondi ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Essaye un truc genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TFloatField(Table1.FieldByName('MONTANT')).Precision := 2;
    Ton problème est que le champ est tronqué dans la Table (surement paradox) au lieu d'être arrondi ...
    Merci, mais ça ne fonctionne pas (j'ai toujour 1.55).
    Le résultat n'est pas tronqué, car quand la valeur est 1.556 ; il renvoi bien 1.56.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Citation Envoyé par karkass59
    Merci, mais ça ne fonctionne pas (j'ai toujour 1.55).
    Le résultat n'est pas tronqué, car quand la valeur est 1.556 ; il renvoi bien 1.56.
    peut-être que la valeur initiale est:
    1.5549
    arrondi à 3 digits:
    1.555
    arrondi à 2 digits:
    1.55
    arrondi à 1 digits:
    1.6

    Bienvenue dans le monde des points flottants.
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  5. #5
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Bonjour à tous

    Envoyé par karkass59
    Merci, mais ça ne fonctionne pas (j'ai toujours 1.55).
    Ventre Saint gris, que ce pb est embétant. Je l'ai eu des dizaines de fois

    Je ne sais pas si tu peux faire ce que je vais te proposer, mais voilà comment je procéde

    Je prends la valeur 1.556, je la multiplie par 100 : j'obtiens 155.6. J'ajoute 0.5. Là j'obtiens 156.1 (mais 155.9 si j'avais par exemple 1.554) Je prends la valeur entière de 156.1, et j'obtiens 156, que je divise par 100 --> 1.56

    Dans ce cas , de 1.550 à 1.554, j'ai toujours 1.55 à la fin. Et de 1.556 à 1.559 j'ai 1.56. Regarde si ce "truc" peut t'aider.

    Bon courage

    Je ne dis même pas le nombre de fois où le calcul de la TVA m'a obligé à cette piroutte !
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  6. #6
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    plus simple
    Aide delphi
    SimpleRoundTo utilise l'arrondi arithmétique asymétrique pour déterminer comment arrondir la valeurs qui se trouvent exactement au milieu des deux valeurs ayant le nombre de chiffres significatifs souhaité. Cette méthode arrondit toujours vers la valeur la plus grande.
    donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table1.FieldByName('MONTANT').Value := SimpleRoundTo(1.555, -2);
    à+

  7. #7
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Alors ce dernier truc, je vais m'en servir, foie de JP.NUAGE
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

Discussions similaires

  1. [AC-2003] Arrondir champ unité supérieure
    Par lucas-18 dans le forum IHM
    Réponses: 8
    Dernier message: 26/02/2010, 18h00
  2. Arrondir à la valeur supérieure le contenu d'un champs
    Par _shuriken_ dans le forum Access
    Réponses: 7
    Dernier message: 06/07/2007, 10h53
  3. Réponses: 2
    Dernier message: 02/08/2006, 17h04
  4. Arrondir la valeur d'un champ dans un état?
    Par drthodt dans le forum Access
    Réponses: 2
    Dernier message: 14/09/2005, 16h46
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

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