1. #1
    Candidat au Club
    Inscrit en
    octobre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 4
    Points : 2
    Points
    2

    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 expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

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

    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
    Candidat au Club
    Inscrit en
    octobre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 4
    Points : 2
    Points
    2

    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 averti
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

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

    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
    Candidat au Club
    Inscrit en
    octobre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 4
    Points : 2
    Points
    2

    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 expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

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

    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
    Candidat au Club
    Inscrit en
    octobre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 4
    Points : 2
    Points
    2

    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 averti
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

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

    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 expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

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

    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