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

C# Discussion :

caster de string à double [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 176
    Par défaut caster de string à double
    bonsoir !

    je caste des données string ("99.99" , "0.12" , "0.45", "0.10", "0.00" .... 1 ou 2 chiffres du côté des entiers et toujours 2 décimales).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    List <string> numerosString = new List<string>(new string[] {("99.99" , "0.12" , "0.45", "0.10", "0.00"});
    List <double> numerosDouble = new List<double>();
     
    for (int i = 0 ; i < numerosString.Count ; i++ )
    numerosDoubles[i] = Convert.ToDouble(numerosString[i]);
    je m'attends alors à obtenir quelque chose comme : 99.99 , 0.12 , 0.45, 0.1, 0
    mais pas du tout. tous les points-séparateurs disparaissent et le résultat est "bizarre"

    du coup, les calculs que je veux réaliser du type moyennes des numerosDouble ne marchent pas du tout

    des idées ?

    merci :-)

    n.b : le petit morceau de code au-dessus est illustratif, mais il n'a pas été testé. c'est juste pour montrer ce que je souhaite faire.

  2. #2
    Inactif  

    Homme Profil pro
    développeur Vala
    Inscrit en
    Février 2011
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 478
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string[] numerosString = new string[]{"1.21","2.23","0.50","56.65"};
    double[] numerosDouble = new double[numeroString.Length];
    for(int i=0;i<numerosString.Length;i++)
    {numerosDouble[i]=Convert.ToDouble(numerosString[i]);}
    ceci devrait fonctionner chez toi, numerosDouble devient ici un tableau de nombre à virgule.


  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 176
    Par défaut
    merci de ta réponse retrovrep.
    en fait, dès le départ, j'ai opté pour des list et non des array parce que je ne sais pas (dans mon code ... ) quelle en sera la longueur (combien il y aura de numerosString dans mon exemple ).
    à moins que l'on puisse créer des arrays sans en spécifier la longeur ??

  4. #4
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonsoir.

    C'est peut-être un problème de culture : le point comme séparateur décimal est une convention anglo-saxonne alors qu'en France nous utilisons la virgule. Du coup si ta culture est française, cela peut empêcher la conversion de fonctionner correctement.

    Essaye de passer une culture personnalisée, construite à partie de la culture courante mais pour laquelle tu spécifieras le point comme séparateur décimal. Puis passe cette culture en argument de Convert.ToDouble (ou Double.TryParse).

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    comme la dit donquiche c'est surement un problème de séparateur

    il est possible de passer deux paramètres à la méthode ToDouble pour spécifier le séparateur décimal
    http://msdn.microsoft.com/fr-fr/library/9s9ak971.aspx

    continue à utiliser les listes ça marche très bien et ajoute ta valeur à ta liste de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    numerosDoubles.Add(Convert.ToDouble(numerosString[i], provider));

  6. #6
    Inactif  

    Homme Profil pro
    développeur Vala
    Inscrit en
    Février 2011
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 478
    Par défaut
    tout à fait !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string[] s = new string[];
    //puis
    s.Add(string);
    voire AddRange, où tu ajoute un tableau à un autre !

  7. #7
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Citation Envoyé par rotrevrep Voir le message
    tout à fait !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string[] s = new string[];
    //puis
    s.Add(string);
    voire AddRange, où tu ajoute un tableau à un autre !
    Heu...
    Non.


    De toute façon, osef, les listes font très bien l'affaire ici.

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 176
    Par défaut
    merci de vos réponses, je teste çà à midi !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/02/2008, 16h56
  2. La Conversion String-->Double
    Par jejermoa dans le forum Langage
    Réponses: 3
    Dernier message: 07/05/2007, 09h55
  3. Problème convertion string->double
    Par PP(Team) dans le forum C++
    Réponses: 5
    Dernier message: 07/03/2007, 08h51
  4. Réponses: 3
    Dernier message: 29/08/2006, 11h31
  5. caster une string en char*
    Par luta dans le forum C++
    Réponses: 5
    Dernier message: 20/01/2006, 02h36

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