Conversion String en Float (Flottant avec point)
Bonjour,
Je suis devant un problème, qui pourrait vous sembler facile à résoudre mais je
ne suis qu'un débutant :oops:
J'ai un souci de conversion, je m'explique : Je dois afficher une valeur dans un
stringgrid en prenant en compte un paramètre de représentation (0,001 par exemple).
Je reçois des données par le réseau CAN, que je récupère dans la
variable "factor" de type double. Je dois multiplier par un coefficient
défini de façon arbitraire de type float et je dois afficher la valeur avec
la résolution demandée.
La ligne valFin := SimpleRoundTo(StrToFloat(factor),-nbDec); me pose
une erreur car elle contient un point et non une virgule.
Pouvez-vous me dire comment convertir un string de decimal avec virgule
en decimal avec point svp ? Merci
Pour l'instant, j'utilise une routine qui parcourt la variable valFin en remplaçant
la virgule par le point de façon "artificielle".
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
Begin
coeff := 1,56;
FormAffichage := 0,005;
// Détection de la position de la virgule : nbDec->Nb de chiffres après virgule
for cptPosVirg:=0 to length(FormAffichage) Do
Begin
if FormAffichage[cptPosVirg]=',' then posvirgl:=cptPosVirg;
nbDec := length(FormAffichage)-posvirgl;
End;
factor := FloatToStr(longint((@donnee[5])^)*coeff); // On récupère l'info sur le CAN et on multiplie par le coeff
// Formatage de la valeur à afficher (on remplace la "," par le ".")
for ab:=0 to length(factor) Do
Begin
if factor[ab]=',' then factor[ab]:='.';
End;
valFin := SimpleRoundTo(StrToFloat(factor),-nbDec); // On arrondit la valeur à afficher en respectant le format demandé
End
Else
Begin
if(donnee[4]=0) then StringGrid1.Cells[3,n]:=FloatToStr(valFinale)+' '+PParameterReceived^.Unite;
End; |