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 :

Problème de conversion


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut Problème de conversion
    Bonjour,

    J'ai developpé une petite application en C# qui utilise les fonctions de conversion suivantes :

    • Convert.ToDouble(string s)
    • double.Parse(string s)
    • double.TryParse(string s, out double d)


    Quand j'exécute ces fonctions sur une machine 1, les résultats sont corrects :

    1,2 --> 1,2
    8,3 --> 8,3
    10,8 --> 10,8
    88,1 --> 88,1
    888,6 --> 888,6

    Lorseque j'éxécute le MEME code sur une machine 2, toutes les chaines commencant pas le chiffre 8, sont tronquées :
    1,2 --> 1,2
    8,3 --> 0,3 !!!
    10,8 --> 10,8
    88,1 --> 8,1 !!!
    888,6 --> 88,6 !!!

    J'ai désinstaller puis réinstaller le Framework 2.0, mais toujours le même problème.

    Quelqu'un aurait-il une solution ? ou une explication à ce problème surnaturel ?

    Merci pour votre aide.


    Configuration machine 1 :
    - XP Professionnel Version 2002, SP2
    - Pentium(R) D CPU 2.80 Ghz
    - 1 Go RAM

    Configuration machine 2 :
    - XP Professionnel Version 2002, SP2
    - Pentium(R) D CPU 2.80 Ghz
    - 1 Go RAM

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    a tous hasard, Poste le code !

    au fait tu compile sur la meme machine et l'execution se fait sur deux postes differents ? ou alors tu compile sur chaque poste ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    Citation Envoyé par ZaaN Voir le message
    a tous hasard, Poste le code !

    au fait tu compile sur la meme machine et l'execution se fait sur deux postes differents ? ou alors tu compile sur chaque poste ?
    Voici le code que j'utilise :

    1)
    double t;
    string s = textBox1.Text.Replace('.', ',');

    double.TryParse(s, out t);
    label1.Text = t.ToString(); ;

    2)
    t = double.Parse(s);
    label2.Text = t.ToString();

    3)
    t = Convert.ToDouble(s);
    label3.Text = t.ToString();

    L'application est compilée sur la machine 1, puis exécutée sur les 2 machines.

  4. #4
    Membre éprouvé Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Les 2 machines sont configurées de la même façon pour ce qui est de la "culture" ? (dans les Options Régionales et linguistiques, en particulier dans la définition des formats numériques et des séparateurs)

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Est ce une application console, une winform ?
    Comment tu execute le programme sur les deux machines ?

    Qu'elles sont les installation différentes sur les deux même machines ?

    Peux tu faire des images des disques de tes machines, les montés dans des VMWare, et essayer le code sur ces deux machines virtuelles sur les deux postes ?

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    La machine qui obtient un résultat "bizarre" manifeste-t-elle par ailleurs un comportement "anormal" avec d'autres applications ?
    Et sur d'autres machines, ça donne quoi ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut
    Vérifie les valeur à l'aide du pas à pas du débugger. C'est souvent comme ça qu'on voit les erreurs. Faut regarder la pile des appels aussi (vérifier que des fonction indésirable ne soient pas appelé).
    Compile sous la deuxième machine avec le débugger!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    Citation Envoyé par mrrenard Voir le message
    Vérifie les valeur à l'aide du pas à pas du débugger. C'est souvent comme ça qu'on voit les erreurs. Faut regarder la pile des appels aussi (vérifier que des fonction indésirable ne soient pas appelé).
    Compile sous la deuxième machine avec le débugger!
    La pile des appels n'est pas bien longue puisqu'elle comporte que la fonction double.TryParse(...).

    Impossibilité de désinstaller les programmes et de compiler sur la machine incriminée. Celle-ci ce trouve chez un client.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut
    Sinon j'ai une grande suggestion :
    la classe Convert.ToDouble(string s) devrait te certifier la réussite. Après tout, si microsoft l'a faite c'est qu'il doit y avoir une raison. Peut-être qu'elle corrige ce gros bug.

    D'ailleurs c'est indiqué sur la msdn!
    http://msdn2.microsoft.com/fr-fr/lib...le(VS.80).aspx
    Implémentations d'interface

    Ce type implémente les interfaces IComparable, IComparable, IFormattable et IConvertible. Pour les conversions, utilisez la classe Convert au lieu de l'implémentation du membre d'interface explicite de IConvertible de ce type.

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Alors je ne suis pas un spécialiste et donc je ne peux pas confirmer les propos que je vais tenir mais :
    ToString sur un double n'appelle t'elle pas Convert.ToDouble(string s) ou les méthodes que Convert.ToDouble(string s) appelle ???

    Enfin c'est vrai que tu peux toujours essayer, cela ne devrait pas être long

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut
    Voir mon dernier message que je viens à l'instant de modifier
    Double.Parse(string s) != Convert.ToDouble(string s)
    la méthode Parse est une implémentation d'e l'interface IConvertible et est déconseiller par microsoft.
    En gros, on peut se demander pourquoi la méthode Parse est déconseiller, mais en attendant, autant utilisé des méthodes fiables à 100% (enfin j'espère).

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut
    Comprend pas!

    Chez moi ca marche nickel, pourrais-tu nous refiler tout le code y compris la winform et le code du designer?

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Citation Envoyé par mrrenard Voir le message
    Comprend pas!

    Chez moi ca marche nickel, pourrais-tu nous refiler tout le code y compris la winform et le code du designer?
    +1
    Si on veut éliminer la possibilité que cela vient du code il fgaut qur l'on teste ton code.
    Je pense que cela vient de la machine moi.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut
    Question à deux balles,
    Tout les testes sont fait avec le framework 2.0 ou certain client sont sous linux avec mono 2.0?
    Parceque le framework ca marche, mono aussi mais il est possible que code compiler par framework soit illisible par mono

  15. #15
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Citation Envoyé par mrrenard Voir le message
    Question à deux balles,
    Tout les testes sont fait avec le framework 2.0 ou certain client sont sous linux avec mono 2.0?
    Parceque le framework ca marche, mono aussi mais il est possible que code compiler par framework soit illisible par mono
    Dans ce cas mono n'aurais plus aucun sens.
    Ton code compilé donne de l'IL.
    Et j'espère bien que mono sait lire l'IL !!! Et le même.

    Si ce n'est pas le cas, je trouve cela étonnant.

Discussions similaires

  1. problème de conversion de dimension dans BUSINESS OBJECT
    Par greatmaster1971 dans le forum Deski
    Réponses: 4
    Dernier message: 28/04/2014, 13h15
  2. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  3. Problème de conversion 3DS->.X
    Par JBernn dans le forum DirectX
    Réponses: 5
    Dernier message: 08/04/2004, 19h08
  4. Problème de conversion unicode
    Par djmalo dans le forum C
    Réponses: 5
    Dernier message: 09/03/2004, 11h48
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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