Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : arrondir un real [ Archives / Bases de données ] (momohbj)

mercredi 24 novembre 2004 à 01:45:26 | arrondir un real

momohbj

mon probleme, une somme d'une colonne que cette derniere
sont des montants (champs calculé)
donc quand je calcule la somme ,les montants ne sont pas reelement à deux chiffres alors il calcule à des chiffres infini aprés la virgule malgres que ces montants sont formatés à 2 ch apres la virgule.
merci!

mercredi 24 novembre 2004 à 02:06:57 | Re : arrondir un real

Bestiol

po très explicite tout ça ...

mercredi 24 novembre 2004 à 03:05:36 | Re : arrondir un real

japee

Membre Club Administrateur CodeS-SourceS
Si le problème consiste à arrondir à 2 chiffres après la virgule, tu peux utiliser la fonction "Format" ainsi :

var
Montant: String;
Flt: Real // (ou tout autre type réel)

Flt := 3.1451;
Montant := Format('%.2f', [Flt]);


(tu obtiens Montant = 3,15)

Pour plus de précisions, voir "Chaînes de format" dans l'aide en ligne de Delphi.

N'oubliez pas de valider "Réponse acceptée" si ça vous convient, de toute manière vous ne pouvez pas valider autre chose !

mercredi 24 novembre 2004 à 07:26:21 | Re : arrondir un real

MoveX

sinon, pour arrondir simplement un reel comme cest si bien dit dans le titre, tu peux utiliser la fonction Trunc(real)= integer;

mercredi 24 novembre 2004 à 13:59:05 | Re : arrondir un real

Kenavo

Si tu veux afficher un résultat arrondi à 2décimales, tu fais comme dit Japee.
Si tu veux que les réels soient réelement arrondis à deux décimales, utilise une fonction du genre :
uses
Math;

{$R *.DFM}

function Precision(Value : real; Decimales : integer) : real;
var
n : Extended;
begin
n := round(intPower(10,Decimales));
Result := Round(Value * n) / n;
end;



Avec la solution Japee :
3.506666 (affiché 3.51) + 2.426666 (affiché 2.43) = 5.933332 sera affiché 5.93
Avec la fonction
Precision(3.506666,2)+Precision( 2.426666,2) = 5.94

Ken@vo
____________________
Code, Code, Codec !


mercredi 24 novembre 2004 à 19:55:53 | Encore, encore, et tjs encore

grandvizir

4ème possibilité:

var s : string;
begin
Str(ExtendedValue:0:2,s);
result:=s;
end;

Pour convertir le point en virgule, on met:

Str(ExtendedValue:0:2,s);
if Pos('.',s)<>0 then s[Pos('.',s)]:=',';
result:=s;

=============
Validez les réponses si ok...

ViewVite : HTML - ZIP

mercredi 24 novembre 2004 à 21:56:20 | Re : arrondir un real

rsca_en_force

ou alors :2:2 pour deux decimale ...

vendredi 26 novembre 2004 à 00:39:49 | Re : arrondir un real

momohbj

comme je suis debutant en prog(delphi),expliquez moi avec precision.
donc j"ai un champs calculé"M"(un produit de2 autres champs),
le resultat est formaté à 2 chiffres aprés la virgule.
le prob: la somme de ce champs(resultats) de tout les enregistts
est faux malgres qu'il est a deux chiffres apres la virgule.
exp:
2,34 +1,33 +1,55 me donne 5,24 au lieu de 5,22.

merci!

vendredi 26 novembre 2004 à 07:53:27 | Re : arrondir un real

Kenavo

Tu dis :"j"ai un champs calculé"M"(un produit de2 autres champs),le resultat est formaté à 2 chiffres aprés la virgule."

Formaté en valeur ou pour l'affichage ?

Le fait de formater un réel avec deux chiffres après la virgule pour l'afficher (conversion reel->chaine) ne modifie en rien la valeur du réel.

Tu n'additionnes pas un réel qui vaut 2,34 mais un réel qui s'écrit 2,34 quand on le représente avec deux chiffres après la virgule. Tout ce que tu peux dire , c'est que 2,335 <= X < 2,345

Par contre formate M avec une fonction comme Precision(X,n) et la plus de problème, le réel n'a plus que deux chiffres après la virgule et ça ce calcule comme à l'école primaire.

Ken@vo
____________________
Code, Code, Codec !

mardi 30 novembre 2004 à 23:14:48 | Re : arrondir un real

japee

Membre Club Administrateur CodeS-SourceS
Alors, momohbj, ça répond à ta question ?

Le sujet est intéressant, tout n'est pas forcément dit...
J'ai personnellement "planché" là-dessus un petit moment.
J'ai d'autres approches qui pourraient se révéler intéressantes pour nous tous.
Mais si l'intérêt retombe...

Il y a pas mal de possibilités selon ce qu'on veut faire exactement.
Un sujet de source, quoi... mais sûr, sûr !

Kenavo > Merci à toi, je ne connaissais pas IntPower()... très utile à l'usage (ah, math.pas)

Bonne prog', faut pas mollir

N'oubliez pas de valider "Réponse acceptée" si ça vous convient, de toute manière vous ne pouvez pas valider autre chose !


1 2

Cette discussion est classé dans : calcule, real, somme, arrondir, montants


Répondre à ce message

Sujets en rapport avec ce message

Juste un petit prog de calcul [ par Cyanure ] Bonjour, Je veux faire un prog qui fera l'addition entre 3 edit et mettra la somme dans un quatrieme. Je voudrait que les 3 edit soit egal a zero au d Arrondir a la decimal voulu [ par MasterJ ] Salut,Quel est la procedure la plus optimale pour arrondir une variable extended a un nombre de décimale donné.Il s'agit d'argent donc y a t-il une fc QREPORT SOMME [ par w38 ] Quelle est la fonction qui permet de faire la somme d'une expression (QREXPR) ?En fait je souhaiterais la mettre dans une band de type group.MERCI C'e QREPORT SOMME [ par w38 ] Quelle est la fonction qui permet de faire la somme d'une expression (QREXPR) ?En fait je souhaiterais la mettre dans une band de type group.MERCI C'e QREPORT SOMME [ par w38 ] Quelle est la fonction qui permet de faire la somme d'une expression (QREXPR) ?En fait je souhaiterais la mettre dans une band de type group.MERCI C'e QREPORT SOMME [ par w38 ] Quelle est la fonction qui permet de faire la somme d'une expression (QREXPR) ?En fait je souhaiterais la mettre dans une band de type group.MERCI C'e QREPORT SOMME [ par w38 ] Quelle est la fonction qui permet de faire la somme d'une expression (QREXPR) ?En fait je souhaiterais la mettre dans une band de type group.MERCI C'e Protocol RTP (Real Time Protocol) [ par jockos ] Bonjour,Existe t-il un composant Delhi qui permet d'utiliser ce protocole (niveau applicatif, au même titre que HTTP ou FTP) ?Ce protocol sert à faire Type de fonction Array problem [ par ryadus ] Salut,J'ai un probleme lorsque je crée une fonction de type de sortie Array of real par exemple, ça ne marche pas, il ya erreur, je suis obligé de cré arrondir un nombre [ par 980074 ] bête petite question : comment arrondir, en pascal, un nombre entamé vers l'unité supérieure? TRUNC + 1 n'est pas valable pour les nombres entiers...e


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.