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
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 3
    Points
    3
    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
    Points : 661
    Points
    661
    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 ?
    Pour les details, cherche tout seul !

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 3
    Points
    3
    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 habitué Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 142
    Points
    142
    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)
    Working as designed

  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 : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    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 ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  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 : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    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 ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 3
    Points
    3
    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 régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    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 : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    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
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    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 régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    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 : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    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.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    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 : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    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.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

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