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

Delphi Discussion :

Conversion String to Double.


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 32
    Par défaut Conversion String to Double.
    Bonjour à tous,

    J'ai un problème de conversion du String vers une valeur Double.

    Je voudrais par exemple convertir le string '0.52' en valeur 0.52. Cependant j'ai testé avec StrToFloat() et .ToDouble mais aucune ne fonctionne. Cela me renvoie la valeur 0.

    Avez vous d'autre idées s'il vous plaît ?

    Merci

  2. #2
    Membre chevronné Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Par défaut
    Tes fonctions renvoient '0' ou bien une exception ?
    Si c'est 0, est-ce StrToFoatDef que tu utilises ?
    Si tu fais le même teste en utilisant la chaîne '0,52' (donc avec une virgule) qu'obtiens-tu ?

    Je pense que tu devrais jeter un œil à "Decimalseparator"

  3. #3
    Membre chevronné Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Par défaut
    Et puis, dans quelle version de Delphi es-tu ?

  4. #4
    Membre chevronné Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Par défaut
    En D10 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      s : String;
      d : double;
      fs : TFormatSettings;
    begin
      fs.DecimalSeparator := '.';
      s := '0.52';
      d := StrToFloat(s, fs);
    end;

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 32
    Par défaut
    Citation Envoyé par blonde Voir le message
    En D10 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      s : String;
      d : double;
      fs : TFormatSettings;
    begin
      fs.DecimalSeparator := '.';
      s := '0.52';
      d := StrToFloat(s, fs);
    end;
    Je viens d'essayer avec le séparateur, ça marche à merveille. Merci

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Citation Envoyé par zohra051 Voir le message
    J'ai un problème de conversion du String vers une valeur Double.

    Je voudrais par exemple convertir le string '0.52' en valeur 0.52. Cependant j'ai testé avec StrToFloat() et .ToDouble mais aucune ne fonctionne. Cela me renvoie la valeur 0.


    Un séparateur décimal invalide sur un StrToFloat devrait afficher " '0.52' is not a valid floating point value " ou " '0.52' n'est pas une valeur en virgule flottante correcte " via une exception EConvertError
    Ce 0 est-il ?
    - une valeur affichée par le débuggueur,
    - une valeur par défaut affectée par un try except,
    - un FloatToStr/Fomat/FormatFloat ou une autre procédure de conversion Double vers String pour débogguer la conversion String vers Double ?
    - une affectation à une variable entière tronquant le résultat
    - une syntaxe mal maitrisée
    Il y a un tellement de situation possible pour une mauvaise interprétation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    var
      D: Double;
      I: Integer;
      FS: TFormatSettings;
    begin
      FS := TFormatSettings.Create();
      FS.DecimalSeparator := '.';
     
      D := StrToFloat('0.52', FS);
      ShowMessage(FloatToStr(D));
      ShowMessage(D.ToString());
      I := Trunc(D); // troncature explicite
      ShowMessage(FloatToStr(I));
     
     
      FS.DecimalSeparator := ',';
     
      ShowMessage('FloatToStr(StrToFloat(''0,54'', FS)) = '+ FloatToStr(StrToFloat('0,54', FS)));
      ShowMessage('StrToFloat(''0,54'', FS).ToStr = '+ StrToFloat('0,54', FS).ToString);
      ShowMessage('((''0,54'').ToDouble()).ToString() = '+ (('0,54').ToDouble()).ToString());
      ShowMessage('(string.ToDouble(''0,54'')).ToString() = '+ (string.ToDouble('0,54')).ToString());
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. Problème de conversion String en Double
    Par eighty_three dans le forum Langage
    Réponses: 7
    Dernier message: 19/06/2008, 09h41
  2. Ma conversion string en double tronque..
    Par NiamorH dans le forum C++
    Réponses: 14
    Dernier message: 08/03/2008, 13h06
  3. conversion string en double
    Par pouletator dans le forum Général Python
    Réponses: 4
    Dernier message: 24/10/2007, 10h35
  4. conversion string en double
    Par kakrocq dans le forum C++/CLI
    Réponses: 4
    Dernier message: 11/04/2007, 13h54
  5. conversion string en double
    Par zmatz dans le forum SL & STL
    Réponses: 2
    Dernier message: 14/10/2005, 22h46

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