none
[VB 2008 Ex ] convertir un string en single[RESOLU] RRS feed

  • Question

  • Bonjour, Bonsoir,

    J'ai un tableau  T ils contient des chiffres.

    quand je regarde ce tableau dans le menu déroulant pas à pas ils sont en string. Ok pas de soucie.

    La je veut récupérer deux valeur T(0) et T(1) qui sont par ex: 123.12 et 150.

    Dim R1 as Single
    Dim R2 As single
    Dim Resultat As Single

    Donc je fait:

    R1 = CType(T(0), Single)
    R2 = CType(T(1), Single)

    Je reçois ce type de msg d'erreur:

     L'exception System.InvalidCastException n'a pas été gérée.

    Pour ne plus avoir cette erreur je doit faire comme ceci:

    R1 = Val(Tableau(0))
    R2 = Val(Tableau(1))

    Ma qst pourquoi la méthode avec Ctype ne fonctionne pas ????

    D'avance merci.



    • Modifié Marco67 mercredi 22 juillet 2009 14:35
    lundi 20 juillet 2009 16:23

Réponses

  • Bonjour,

    La conversion d'une chaîne de caractère en Single est loin d'être simple et peut se faire très finement en .NET

    Tu peux en effet définir quel est le séparateur de décimal, quel est le séparateur de groupe (milliers),que es tla taille d'un groupe (3 chiffre pour les milliers)

    Par exemple dans la culture française, le chiffre 3232,32 s'écrira en US 3,232.32

    .NET met à disposition des objets CultureInfo dans System.Globalization. Cette classe contient notamment un membre NumberFormatInfo qui contient ces information. Ces deux classes implémentent IFormatProvider.

    Pour convertir une chaine en Single, je te conseille d'identifier la culture dans lequel la chaîne a été saisie. En apparence, je pense que la CultureInfo invariante System.Globalization.CultureInfo.InvariantCultureInfo devrait convenir :

    R1 = Single.Parse(T(0), System.Globalization.CultureInfo.InvariantCulture)

    En espérant que ça t'aide,

    t0x1
    • Proposé comme réponse t0x1 mercredi 22 juillet 2009 07:34
    • Marqué comme réponse Marco67 mercredi 22 juillet 2009 14:34
    • Non marqué comme réponse Marco67 mercredi 22 juillet 2009 14:34
    • Marqué comme réponse Gabriel MongeonModerator mercredi 22 juillet 2009 17:07
    mercredi 22 juillet 2009 07:34
  • Bonjour / Bonsoir,

    Merci de t'être penser su mon problème, j'avais déjà essayé ceci, mais en fin de compte,
    mon soucis venait du faite que je n'avais pas déclarer mon tableau.

    encore merci.
    mercredi 22 juillet 2009 14:35

Toutes les réponses

  • Bonjour,

    La conversion d'une chaîne de caractère en Single est loin d'être simple et peut se faire très finement en .NET

    Tu peux en effet définir quel est le séparateur de décimal, quel est le séparateur de groupe (milliers),que es tla taille d'un groupe (3 chiffre pour les milliers)

    Par exemple dans la culture française, le chiffre 3232,32 s'écrira en US 3,232.32

    .NET met à disposition des objets CultureInfo dans System.Globalization. Cette classe contient notamment un membre NumberFormatInfo qui contient ces information. Ces deux classes implémentent IFormatProvider.

    Pour convertir une chaine en Single, je te conseille d'identifier la culture dans lequel la chaîne a été saisie. En apparence, je pense que la CultureInfo invariante System.Globalization.CultureInfo.InvariantCultureInfo devrait convenir :

    R1 = Single.Parse(T(0), System.Globalization.CultureInfo.InvariantCulture)

    En espérant que ça t'aide,

    t0x1
    • Proposé comme réponse t0x1 mercredi 22 juillet 2009 07:34
    • Marqué comme réponse Marco67 mercredi 22 juillet 2009 14:34
    • Non marqué comme réponse Marco67 mercredi 22 juillet 2009 14:34
    • Marqué comme réponse Gabriel MongeonModerator mercredi 22 juillet 2009 17:07
    mercredi 22 juillet 2009 07:34
  • Bonjour / Bonsoir,

    Merci de t'être penser su mon problème, j'avais déjà essayé ceci, mais en fin de compte,
    mon soucis venait du faite que je n'avais pas déclarer mon tableau.

    encore merci.
    mercredi 22 juillet 2009 14:35