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

VB.NET Discussion :

manipulation des nombres + options regional


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 150
    Par défaut manipulation des nombres + options regional
    Bonjour je suis entraine de développer une application (suivi budgétaire) , je viens de rencontrer un problème avec les nombres

    Si le paramètre format des nombres dans option régionale est défini sur un type de format avec "," comme séparateur

    dans mon application je peux utilisé que des nombres avec "," et le point me pose des problèmes

    Et vice-versa

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bah oui c'est normal... En .NET, le format des nombres (et aussi des dates/heures et quelques autres trucs) est contrôlé par la culture courante (CultureInfo.CurrentCulture), qui elle-même dépend des options régionales du système. Ca impacte le formatage des nombres ("conversion" en chaine de caractère) et le parsing (conversion à partir d'une chaine).

    Normalement ça correspond bien à ce que l'utilisateur veut : en français on utilise la virgule comme séparateur décimal, alors qu'en anglais c'est le point. Mais c'est vrai qu'on a parfois tendance à utiliser le point, même en français...

    Ce que tu peux faire si tu veux autoriser les 2, c'est remplacer les virgules et les points par le séparateur de la culture courante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim separator As String = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
    Dim s As String = textBoxValeur.Text.Replace(".", separator).Replace(",", separator)
    Dim valeur As Double = Double.Parse(s)
    Par contre attention : en anglais, la virgule a un autre sens : c'est le séparateur de milliers... Mais de toutes façons, par défaut Double.Parse n'autorise pas les séparateur de milliers, donc normalement ça ne change pas grand chose.

    Sinon, une autre option est d'intercepter la touche "." pour mettre une virgule à la place...

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 150
    Par défaut
    ou dois-je placer se bout de code ??
    je dois ajouter une réference ou pas

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par jalalnet Voir le message
    ou dois-je placer se bout de code ??
    A l'endroit où tu essaies de convertir en nombre la saisie de l'utilisateur. C'est bien ça ton problème, non ?
    Sans voir ton code, je ne peux pas t'en dire plus...

    Citation Envoyé par jalalnet Voir le message
    je dois ajouter une réference ou pas
    Non

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 150
    Par défaut
    erreur dans cette ligne

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Dim separator As String = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator


    le nom CultureInfo n'est pas déclaré

  6. #6
    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
    Plus simplement...
    Tu imposes en fait à tes utilisateurs un format spécifique pour la saisie des nombres (point pour séparateur de décimales et virgule pour séparateur de milliers) ?

    Dans ce cas, crée ta propre culture basée sur la culture courante en changeant les paramètres de formatage des nombres. Puis tu passes cette culture en argument des diverses méthodes de formatage. Peut-être même est-il possible de remplacer directement la culture courante au niveau du processus.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par jalalnet Voir le message
    erreur dans cette ligne

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Dim separator As String = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le nom CultureInfo n'est pas déclaré
    Ajoute Imports System.Globalization au début du fichier. Normalement Visual Studio te le suggère dans le smart tag

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/12/2010, 02h27
  2. Manipuler des nombres > Long.MAX_VALUE
    Par J_Lennon dans le forum Langage
    Réponses: 2
    Dernier message: 13/06/2009, 01h21
  3. Manipuler des nombres en notation scientifique
    Par enrikomic dans le forum Mathématiques - Sciences
    Réponses: 6
    Dernier message: 11/07/2007, 13h14
  4. manipuler des grands nombres
    Par Hypnocrate dans le forum C
    Réponses: 3
    Dernier message: 25/03/2006, 22h27
  5. Réponses: 1
    Dernier message: 17/03/2006, 22h23

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