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 :

Conversion non désirée des nombres a virgule


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Points : 89
    Points
    89
    Par défaut Conversion non désirée des nombres a virgule
    Bonjour,
    j'utilise une grid infragistics qui contient quelques valeurs décimales. Dans cette grid, les valeurs sont bien de type 10.0

    Sur cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ultraGrid2.Rows[i].Cells["valeur_declaree"].Value
    En mode débug, avec l espion je vois toujours 10.0


    Par contre quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string test = "INSERT INTO table values("+ultraGrid2.Rows[i].Cells["valeur_declaree"].Value+")";
    test devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table values (10,0);
    Et c'est ce qui bien sûr pose problème. Pourquoi ce comportement bizzare et comment l'eviter ?

  2. #2
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    salut,

    la comme ca, je dirais que comme tu fais une concatenation, tu fais un ToString implicite, et que comme tu es en fr-fr, il te le convertit en 10,0...

    Pour eviter ca, je te conseille de passer par une requete parametree, comme ca, pas de pb de conversion, ca deviendrait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string test = "INSERT INTO table values(@value)";
    cmd.Parameters.Add(New SqlDbParameter("@value", ultraGrid2.Rows[i].Cells["valeur_declaree"].Value));
    avec cmd = ton objet commande (dans le bout de code, c'est suppose sur une base sql server...

  3. #3
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Points : 89
    Points
    89
    Par défaut
    Merci pour ta réponse, j'étais justement en train de passer en mode requête paramétrée. J'essaie et je poste le résultat

  4. #4
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Points : 89
    Points
    89
    Par défaut
    Effectivement la requête paramétrée permet d'éviter le problème. Merci pour l'explication par rapport a la concaténation.
    Au cas ou, il n'y aurait pas un autre moyen ?

  5. #5
    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 : 42
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par bilou972 Voir le message
    Au cas ou, il n'y aurait pas un autre moyen ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    laValeur.ToString(CultureInfo.InvariantCulture)
    Ca formate la valeur en utilisant la culture invariante (anglais) au lieu de la culture française

    Mais la meilleure solution reste l'utilisation d'une requête paramétrée...

  6. #6
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Points : 89
    Points
    89
    Par défaut
    Ok sans problème c'était surtout pour ma culture perso, j'ai quand même passé l'aprem à chercher ça !

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

Discussions similaires

  1. Approximation non désirée des nombres immenses
    Par schecter dans le forum MATLAB
    Réponses: 21
    Dernier message: 15/06/2009, 17h15
  2. Utilisation de variable contenant des nombres a virgule en SQL
    Par Rukawa dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 27/10/2006, 18h54
  3. Duplication non désirée des données
    Par Hades5k dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/08/2006, 21h27
  4. Transparence non désirée des TPanel
    Par Manopower dans le forum Composants VCL
    Réponses: 3
    Dernier message: 07/11/2005, 09h25
  5. sum avec des nombres avec virgule
    Par Bruno2000 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/09/2004, 15h01

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