Arrondir un float [Résolu]

didi59650 77 Messages postés mercredi 5 avril 2006Date d'inscription 9 mai 2006 Dernière intervention - 14 avril 2006 à 14:17 - Dernière réponse : f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention
- 14 avril 2006 à 15:42
je transforme mon string en float avec "strtofloat"
Comment preciser que je veux 2 chiffre aprés la virgule??
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 14 avril 2006 à 14:44
3
Merci
a la question :
il ne connait pas roundto

je repond :
USES MATH; !!!!

a la question :
comment je transforme l'extended en string??

je repond :
VOIR MON PREMIER MESSAGE, AVEC LA FONCTION FORMAT !!!!

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de f0xi
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 14 avril 2006 à 14:21
0
Merci
utilise plutot Format :

var F : extended;
begin
F := pi;
label1.caption := format('%.2f',[F]);
end;

voir mon tuto sur format : utilisation de format()
Commenter la réponse de f0xi
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 14 avril 2006 à 14:27
0
Merci
ooops autant pour moi c'est l'inverse que tu veux :

var F : extended;
begin
F := StrToFloat( Copy(S, 1, Pos(DecimalSeparator,S)+2 ) );
end;

ou encore :

uses math;

var F : extended;

begin

F := RoundTo(StrToFloat(S),-2);

end;
Commenter la réponse de f0xi
didi59650 77 Messages postés mercredi 5 avril 2006Date d'inscription 9 mai 2006 Dernière intervention - 14 avril 2006 à 14:33
0
Merci
il ne connait pas roundto
Commenter la réponse de didi59650
didi59650 77 Messages postés mercredi 5 avril 2006Date d'inscription 9 mai 2006 Dernière intervention - 14 avril 2006 à 14:39
0
Merci
je croix que sa marche mais comment je transforme l'extended en string??
Commenter la réponse de didi59650
didi59650 77 Messages postés mercredi 5 avril 2006Date d'inscription 9 mai 2006 Dernière intervention - 14 avril 2006 à 14:45
0
Merci
c bon c comme un float merci
Commenter la réponse de didi59650
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 14 avril 2006 à 15:42
0
Merci
LOL!

mmm, si je peu te donner un conseil, lit l'aide delphi et commence deja par apprendre les bases ...

il y'a des choses que l'on doit connaitre par coeur pour devenir un bon coder, les types en font partis.

pourquoi il faut les connaitres par coeurs ?
parce qu'on les utilises tout le temps en partout, donc les connaitres et connaitres les principes et conventions qu'il y a autours est trés important.
ce serait une fastidieuse perte de temps si on devais a chaque fois se poser la question de a quoi sert ceci ou cela sur des choses aussi essentielle.

il faut au moins que tu connaisse les particularitée des types flottant.

Extended, est le type le plus grand et le plus precis des types flottant. si j'ecris :

var F : real;
begin
F := Pi * cos(A);
end;

F est de type real mais l'expression arithmetique "pi * cos(a)" est caculé en type Extended pour obtenir la plus grande precision possible.

aves l'experience tu remarqueras trés vite que les types flottant : Real, Real48 et Double sont completement inutile voir obsolete. (d'ailleur Real = Double donc l'un ou l'autre ... ce sont les memes juste le nom change), le type Real48 est garder uniquement dans un soucis de compatibilitée ascendante avec le Turbo Pascal.
car les deux types qui seront le plus utiliser sont Extended (grande precision) et Single (precision raisonnable et suffisante dans beaucoup de cas).

sans parler des problemes de comparaison avec les type Real, Real48 et Double.
car Delphi compare les valeurs flottante egalement en type Extended.
Comme il y a une erreur de precision au passage des Real, Double en extended les comparaisons renvois des resultat erronés.
avec le type Single il y a beaucoup moins d'erreur, neanmoins il faut toujours comparer des valeurs Extended.
exemple :
var F : extended;
begin
F := 555/899;
if F = 555/899 then ...
end;

si F n'est pas de type extended il risque d'y avoir une erreur de comparaison car l'expression 555/899 est elle de type extended.
donc meme si visuellement les chiffres sont egaux (pour nous humains), le CPU lui vois une grosse difference entre les deux.

donc pour comparer un flottant d'un certain type dans une exepression il faut transtyper l'expression dans le meme type :

var F : real;
begin
F := 555/899;
if F = Real(555/899) then ...
end;

il existe bien sur d'autre type flottant, comp, currency...
malgrés cela, Comp est maudit de la meme façon que Real48, compatibilité ascendante ... quand le type INT64 n'existait pas encore... donc a oublier.

Currency quand a lui est exclusivement reservé au calcul monaitaires, donc a ne pas utiliser dans des calculs geometrique ou necessitant une bonne precision au dela de la 4eme decimale (cos, sin, tan ect...)

reste donc, comme je le disais plus haut, Extended et Single, les deux seul type flottant a utiliser.
Single offre une bonne precision sur 7 decimales
Extended offre une grande precision sur 19 decimales

la ou il faut savoir prendre Double ou Extended c'est sur l'utilisation multi-platforme.
Extended n'est pas trés bien portable sur certaine platforme (processeur non x86), je pense que borland nous parle la des platformes speciales tel les station sur processeur non IA-32 ou IA-64
(RISC donc)

donc si le programme ne s'etend que sur des compatible PC (qu'il soit Linux/Windows) le type Extended ne devrait pas poser de probleme les CPU etant les memes ... peu etre aprés un probleme d'implementation du type Extended dans l'architecture systeme de Linux.
donc la oui, on prefereras l'utilisation du type Double plutot qu'Extended.

mais c'est bien sur, le seul petit HIC du type extended.
pour une utilisation purrement windows, le type Extended ne pose aucun probleme et serait meme recommandé.
de toute façon, les conditions de compilation permettent de modifier facilement le code, sans intervention du developpeur, selon la platforme (linux/windows).
Commenter la réponse de f0xi

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.