Virgule flottante [Résolu]

Messages postés
174
Date d'inscription
jeudi 3 février 2005
Dernière intervention
30 janvier 2009
- - Dernière réponse : pseudoOM
Messages postés
174
Date d'inscription
jeudi 3 février 2005
Dernière intervention
30 janvier 2009
- 8 déc. 2005 à 14:53
Bonjour ami développeurs en delphi. Voici mon problème : dans ma base de données ACCESS j'ai un champs de type numérique (réel double format euro). Donc dans ma base j'ai des prix qui s'affichent bien avec 2 chiffres après la virgule. Seulement dans mon programme il n'affiche qu'un chiffre après la virgule (si le 2ème est un 0 : ex 1,50 s'affichera 1,5). Comment faire donc pour le 0 s'affiche également ?
Si quelqu'un a déjà eu se problème et qu'il l'a résolu ou quelqu'un serait susceptible de le résoudre se serait sympa de m'aider.
Merci à tous !

pseudoOM
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
3
Merci
aller je vais embetter encore une fois mon ami Jlen100 :



bonne solution mais :





utilisation de Format tout simplement



- en float



label1.caption := format('%.2f',[13.50]);



renvois : 13,50



- en chiffre monetaire (ajout automatique du symbole monaitaire des options regionnales de windows)



label1.caption : = format('%m',[13.50]);

renvois : 13,50 ?



- la meme avec float et directement le symbole :



label1.caption := format('%.2f ?',[13.50]);

renvois : 13.50 ?



- avec possibilitée de changer le symbole monetaire, l'ordre des
symbole/chiffre et ajout du separateur des milliers avec Numerique et
String :



label1.caption : = format(OrdreStr,[10453.5, Symbole]);



avec OrdreStr '%.2n %s' et Symbole '?' ... Renvois : 10 453,50 ?

avec OrdreStr '%s %.2n' et Symbole '£' ... Renvois : £ 10 453.50



et voila comment on rend totalement obsolete l'utilisation des autres fonction (Type)ToStr

faut dire j'ai tellement fait d'appli qui devait traiter des chiffres en textes que je suis passé maitre

dans l'utilisation de format... hehe

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de f0xi
Messages postés
1651
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
25 juillet 2014
0
Merci
salut,

urtilise la fonction formatfloat

avec comme paramatre:0.00

var chaine:string;

valeur:extended;

begin

valeur:=1253.2633;

chaine:=formatfloat('0.00',valeur);

edit1.Text:=chaine;

end;

resultat= 1253,26

@+

jlen
Commenter la réponse de jlen100
Messages postés
1651
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
25 juillet 2014
0
Merci
foxi--> ça ne m'embête pas ta fonction est plus générale et la mienne plus explicite.

à chacun ses marottes

pour l'application de format j'évite simplement qu'à chaque fois il
faut que je me replonge dans l'aide pour me rappeler des parametres et
comme en général formatfloat me suffit et je n'aime pas trop me
compliquer la vie....



@+

jlen
Commenter la réponse de jlen100
Messages postés
174
Date d'inscription
jeudi 3 février 2005
Dernière intervention
30 janvier 2009
0
Merci
Merci pour vos réponses ! Je vais essayer vos solutions et je vous tiens au courant des résultats !

pseudoOM
Commenter la réponse de pseudoOM
Messages postés
174
Date d'inscription
jeudi 3 février 2005
Dernière intervention
30 janvier 2009
0
Merci
Vos solutions sont intéressantes mais le hic c'est que je travail dans un QuickReport et le problème est le suivant : au lieu de prendre la valeur numérique du champs, il prend l'intitulé de la colonne ! EX : QRDBText1 est relié à un dataset et un datafield 'sommeTotal' (donc sommeTotal s'inscrit dans le QRDBText1). Quand je fait QRep1.preview, QRDBText1 affiche 789,6. Mais QRDBText1.caption retournera 'sommeTotal' au lieu de 789,6 et c'est là que les problèmes commencent car quand je tente
var
somme: String;
sommeTot: Double;
begin
somme:=Form1.QRDBText1.caption;
sommeTot:=StrToFloat(somme); il rouspette à cet endroit en disant que sommeTotal n'est pas un nombre à vrgule flottante correct. Donc je ne peux pas continuer avec la solution du format !
Si quelqu'un à une idée il est le bienvenu !

pseudoOM
Commenter la réponse de pseudoOM
Messages postés
1651
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
25 juillet 2014
0
Merci
salut,

je ne vois pas ou est le probleme 789,6 est bien une chaine conforme

mais force decimalseparator:=','; sinon si decimalseparator='.' il te
provoque une erreur d'exécution mis à part cela je ne d'autre chose qui
pourrait provoqué une erreur.

@+

jlen
Commenter la réponse de jlen100
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
0
Merci
carrement bizare en effet....



si somme est bien une chaine representant un nombre de type Float .... devrais pas y'avoir de probleme.



tiens tente plutot un StrToFloatDef(somme,0.0);



ça eviteras l'erreur de convertion deja et tu pourras peut etre mieux cerné le probleme en voyant ce qui ce passe aprés.
Commenter la réponse de f0xi
Messages postés
174
Date d'inscription
jeudi 3 février 2005
Dernière intervention
30 janvier 2009
0
Merci
Ok j'ai résolu le problème (cela fait déjà un petit temps mais je n'ai pa eu le temps de le dire avant) ! En fait j'ai utilisé la solution de fOxi mais en passant par des DBEdit avant de copier la valeur dans un QRLabel ! Donc à cet endroit je n'utilise plus de QRDBText ! Merci encore !

pseudoOM
Commenter la réponse de pseudoOM

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.