IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Obtenir la valeur exacte d'un nombre décimal représenté par une chaîne de caractères [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 385
    Points : 223
    Points
    223
    Par défaut Obtenir la valeur exacte d'un nombre décimal représenté par une chaîne de caractères
    Bonjour,
    J'utilise souvent la transformation d'un nombre sous forme de chaîne en double avec la formule par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XTOTAL_A:=StrToFloat(MTOTAL);
    Si je recherche le résultat via l'évaluateur Crt+F7 je trouve un nombre avec beaucoup de décimales
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MTOTAL ='4064,53'' 
    XTOTAL_A lui affiche 4064.530000002
    ces décimales peuvent induire des erreurs dans une suite de calculs
    Peut-on définir que ces valeurs déclarées en double ne puissent avoir que 2 ou 3 décimales pour éviter ce risque d'erreur ou bien par une autre instruction.
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,

    Vous auriez obtenu le même résultat si vous aviez évalué : A := 4064.53;.

    Pour un ordinateur, tout nombre est une somme de puissance de 2.
    Or, tout réel contrairement à un entier ne se décompose pas en 1 somme exacte de puissance de 2.
    Exemple :
    1,5 est égal à 2^0 + 2 ^-1
    1,25 est égal à 2^0 + 2 ^-2
    1,26 est égal très approximativement à 2^0 + 2 ^-2 + 2 ^-7 + 2^-9 + 2^-13 + 2^-13 + 2^-14
    etc, etc

    Bref, hormis pour l'affichage où on peut arrondir ou tronquer un nombre, on aura une approximation plus ou moins fine pour les calculs...

    S'il s'agit de calcul comptable ou similaire, le type Currency est peut-être plus adapté...
    Philippe.

  3. #3
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 385
    Points : 223
    Points
    223
    Par défaut
    Merci Phippe pour cette précision oubliée.
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/08/2012, 20h08
  2. Réponses: 0
    Dernier message: 31/10/2010, 18h54
  3. Extraction d'un nombre en tête d'une chaîne de caractères
    Par soulflow dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/01/2009, 10h45
  4. Réponses: 4
    Dernier message: 06/05/2006, 00h52
  5. Nombre d'occurences dans une chaîne de caractères
    Par Olivier14 dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 20h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo