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.
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.
Essaye un truc genre
Ton problème est que le champ est tronqué dans la Table (surement paradox) au lieu d'être arrondi ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part TFloatField(Table1.FieldByName('MONTANT')).Precision := 2;
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
peut-être que la valeur initiale est:Envoyé par karkass59
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
Bonjour à tous
Ventre Saint gris, que ce pb est embétant. Je l'ai eu des dizaines de foisEnvoyé par karkass59
Merci, mais ça ne fonctionne pas (j'ai toujours 1.55).
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)
bonjour
plus simple
donc: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.
à+
Code : Sélectionner tout - Visualiser dans une fenêtre à part Table1.FieldByName('MONTANT').Value := SimpleRoundTo(1.555, -2);
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)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager