Bonjour.
Je voudrais savoir quel est l'équivalent de StrToInt et de IntToStr pour une variable de type Real
J'ai essayé RealToStr mais ça ne veut pas passer apparemment...
Merci d'avance.
Bonjour.
Je voudrais savoir quel est l'équivalent de StrToInt et de IntToStr pour une variable de type Real
J'ai essayé RealToStr mais ça ne veut pas passer apparemment...
Merci d'avance.
FloatToStr
NB : en faisant F1 sur IntToStr, tu devrais voir l'unité dans laquelle elle est déclarée, et pouvoir visualiser les autres fonctions de l'unité : cela peut dépanner quand on cherche un nom...
ok merci mais c'est ce que je viens juste de faire et sur la ligne où je déclare mai variable:
ça me marque: Float: identificateur non déclaré -_-
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2var eur : Float;
C'est normal que Delphi ne sache pas faire la différence entre une variable et un type de variable?
Bon en fait je viens de remplacer float par real et là ça marche.
Bon en fait non ça ne marche pas au final.
Voilà l'erreur que j'ai:
opérateur non applicable sur ce type d'opérande
su ce bouton là:
Alors que sur celui ci il marche très bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 begin Eur := StrToFloat(saisie_francs.Text) div 6.55957; ShowMessage('Cela nous fait ' + FloatToStr(eur) + ' Euros.');
Quelqu'un peut-il m'expliquer la logique?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 begin Eur := StrToFloat(saisie_francs.Text) * 6.55957; ShowMessage('Cela nous fait ' + FloatToStr(eur) + ' Euros.');
ok merci, ça marche cette fois, juste que je m'en étais servi avant et que ça marchait.
Bizarre...
div fonctionne sur les entiers
pour les types de réels, tu as Single (sur 4 octets), Double (sur 8) et Extended (sur 10) selon la précision nécessaire
J'ajouterais également : évite d'utiliser le type Single. Les nombres réels sont des nombres en virgules flottantes. C'est à dire qu'il s'agit de valeur arrondi. Avec un Single, la précision est assez faible et dès que tu commences à enchaîner des calculs tu vas cumuler des erreurs d'arrondis.pour les types de réels, tu as Single (sur 4 octets), Double (sur 8) et Extended (sur 10) selon la précision nécessaire
Donc visiblement tes nombres sont en réalités des monétaires.Eur := StrToFloat(saisie_francs.Text) * 6.55957;
Pour les monétaires, le type Currency est peut-être plus appropriés. Il s'agit d'un nombre décimal géré en virgule fixe, avec quatre chiffres après la virgule. Cette fois tu travailles avec des valeurs exactes (enfin, le résultat est quand même arrondi à 4 décimales, mais tu ne risques pas que 1,3 deviennent 1,299999999...).
Si tu travaille avec une base de données et avec les datasets Delphi, il faut également faire attention aux types des champs et à la façon dont tu les lis :
- Les champs ftFloat sont des nombres décimaux en virgule flottante, à lire avec AsFloat.
- le ftCurrency : C'est exactement la même chose qu'un ftFloat : un flottant. La seule différence avec ftFloat c'est que par défaut, Delphi considèrera que le champ représente un monétaire et le formattera à l'affichage en temps que tel.
- le ftBCD : Il s'agit cette fois tu type décimal en virgule fixe. Il ne s'agit pas d'un nombre au format BCD, mais bel et bien d'un type currency. Il faut le lire avec AsCurrency.
- le ftFmtBCD : Cette c'est un vrai BCD. Donc un nombre qui stocke une valeur exacte, avec un nombre de chiffres et de décimale définit dans le type du champ. Il faut le lire avec AsBCD, et ne travailler ensuite qu'avec le type TBcd.
Si tu utilises les autres méthodes de lecture (par exemple AsFloat pour un ftFmtBCD ou ftBCD), le TField fera automatiquement la convertion qui va bien. Mais tu risques de perdre en précision.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager