1. #1
    Invité de passage
    Inscrit en
    octobre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 4
    Points : 1
    Points
    1

    Par défaut [VB.NET] Conversion de String en Double

    J'ai de la dificulté à convertir des strings en double.

    Ex:
    Dim d as double

    ' J'ai esseyé les fonctions suivant et ça ne fonctionne pas...

    d = CDbl("1.20")

    d = CStr("1.20")

    d = Convert.ToDouble("1.20")

    Quelqu'un a une solution ?

  2. #2
    Membre Expert
    Avatar de Mehdi Feki
    Inscrit en
    décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : décembre 2004
    Messages : 1 113
    Points : 1 520
    Points
    1 520

    Par défaut

    Code Vb.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            Dim d1 As Double
            Dim d2 As Double
            Dim d3 As Double
            Dim d4 As Double
            Dim d5 As Double
     
            Dim ImputString As String = "1.20"
     
            d1 = CDbl(ImputString)
            d2 = ImputString
            d3 = Convert.ToDouble(ImputString)
            Double.TryParse(ImputString, d4)
            d5 = Double.Parse(ImputString)

    Quel genre d'exception as-tu ?
    Mehdi Feki : Modérateur .Net

  3. #3
    Invité de passage
    Inscrit en
    octobre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 4
    Points : 1
    Points
    1

    Par défaut

    Aucune de ces méthodes fonctionnent...
    J'obtiens un:

    "InvalidCastException was unhandled: Conversion from string "1.20" to type 'Double' is not valid."

    et pour d3 & d5 j'obtiens un:
    "Input string was not in a correct format"


  4. #4
    Membre éclairé
    Inscrit en
    janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 29

    Informations forums :
    Inscription : janvier 2006
    Messages : 324
    Points : 316
    Points
    316

    Par défaut

    C'est normal chose que je n'explique pas mais qui m'as posé de grave problème la nuit pour dormir le parseur de double ne considère pas le point comme un séparateur decimal mais il utilise la VIRGULE.

    Code Vb.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim d1 As Double
            Dim d2 As Double
            Dim d3 As Double
            Dim d4 As Double
            Dim d5 As Double
     
            Dim ImputString As String = "1,20"
     
            d1 = CDbl(ImputString)
            d2 = ImputString
            d3 = Convert.ToDouble(ImputString)
            Double.TryParse(ImputString, d4)
            d5 = Double.Parse(ImputString)
    1 || 1 = 1
    1 && 1 = 1
    1 * 1 = 1
    Bon après tout, peut-être que Van Damme avait raison :
    1 + 1 = 1 // harmonie parfaite

  5. #5
    Invité de passage
    Inscrit en
    octobre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 4
    Points : 1
    Points
    1

    Par défaut

    Ça fonctionne merci !!!

    C'est que Windows en français utilise la virgule par defaut comme symbole séparateur de décimal, tandis que Windows en anglais utilise le point.

    On peut utiliser le point comme séparateur avec Windows français en changeant le symbole décimal dans les "Options régionales et linguistiques".

    Ce qui m'inquiète c'est que VB voit une différence entre le point et la virgule, ce qui risque de causer des problèmes de compatibilité lorsque l'on exécute un programme développé en VB sur un Windows en français et sur un Windows en anglais.

    Merci pour la solution !!

  6. #6
    Membre Expert
    Avatar de Mehdi Feki
    Inscrit en
    décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : décembre 2004
    Messages : 1 113
    Points : 1 520
    Points
    1 520

    Par défaut

    +1 pour ekinox17,

    sinon tu peux modifier le format de la separation à l'aide de NumberDecimalSeparator

    Code Vb.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim ciClone As CultureInfo = CType(CultureInfo.InvariantCulture.Clone(), CultureInfo)
    ciClone.NumberFormat.NumberDecimalSeparator = "."
     
    Dim ImputString As String = "1.20"
    d3 = Convert.ToDouble(ImputString, ciClone)
    d5 = Double.Parse(ImputString, ciClone)
    Mehdi Feki : Modérateur .Net

  7. #7
    Invité de passage
    Inscrit en
    octobre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 4
    Points : 1
    Points
    1

    Par défaut

    Super! Ça fonctionne aussi !

    Et en plus, ça règle le problème d'incompatibilité entre les versions de Windows.

    Merci Mehdi !!!

  8. #8
    Membre éclairé
    Inscrit en
    janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 29

    Informations forums :
    Inscription : janvier 2006
    Messages : 324
    Points : 316
    Points
    316

    Par défaut

    Merci mehdi,
    J'ai honte j'avais pas chercher plus loin : j'avais utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Convert.ToDouble(MonDoubleAParser.Replace('.',','));
    1 || 1 = 1
    1 && 1 = 1
    1 * 1 = 1
    Bon après tout, peut-être que Van Damme avait raison :
    1 + 1 = 1 // harmonie parfaite

  9. #9
    Membre Expert
    Avatar de Mehdi Feki
    Inscrit en
    décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : décembre 2004
    Messages : 1 113
    Points : 1 520
    Points
    1 520

    Par défaut

    Tant mieu

    JB-Tech n'oublie pas de cliquer sur le bouton
    Mehdi Feki : Modérateur .Net

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

Discussions similaires

  1. bête conversion de string en double
    Par lucky dans le forum MFC
    Réponses: 10
    Dernier message: 12/02/2014, 08h01
  2. Conversion de string en double
    Par etendard7 dans le forum C++
    Réponses: 4
    Dernier message: 05/04/2012, 17h45
  3. Réponses: 23
    Dernier message: 09/09/2010, 13h11
  4. [C++.Net] Conversion de String en char
    Par tunisienne84 dans le forum MFC
    Réponses: 3
    Dernier message: 27/04/2006, 16h41
  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