Virgule flottante

Résolu
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 - 22 nov. 2005 à 20:08
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre 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

8 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
23 nov. 2005 à 19:54
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
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
22 nov. 2005 à 21:11
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
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
23 nov. 2005 à 20:20
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
0
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
24 nov. 2005 à 15:12
Merci pour vos réponses ! Je vais essayer vos solutions et je vous tiens au courant des résultats !

pseudoOM
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
24 nov. 2005 à 19:51
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
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
24 nov. 2005 à 20:16
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
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
24 nov. 2005 à 22:09
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.
0
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
8 déc. 2005 à 14:53
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
0
Rejoignez-nous