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 :

Convertir un double en 2 variables xEy (exposant)


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Points : 51
    Points
    51
    Par défaut Convertir un double en 2 variables xEy (exposant)
    Bonjour,

    J'ai besoin de convertir un double 2 variables (un double et un int) représentant l'écriture en exposant, soit :
    x E y (où x est un double et y un int)

    En string, cela reviendrait à utiliser ToString("E") sauf que je souhaite l'avoir sous forme de valeur et non de string. L'ancien code que j'ai sous la main me semble bancal et je suis étonné de ne rien trouver dans "Math" me permettant de faire ça... Sachant que je dois pouvoir faire l'opération inverse également (double + int ==> double).

    Merci d'avance !

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    on est d'accord que la donnée en entrée est une string, hein ? (sinon ça ne ferait pas trop de sens).
    Alors tu peux faire ça de deux façons :
    - splitter sur le E et caster ce qu'il y a avant et après vers les types que tu souhaites,
    - utiliser une expression régulière avec des groupes.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Citation Envoyé par OkamiRyuu Voir le message
    L'ancien code que j'ai sous la main me semble bancal et je suis étonné de ne rien trouver dans "Math" me permettant de faire ça...
    Pourquoi ne pas nous donner "l'ancien code". On pourra te donner notre avis dessus
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    on est d'accord que la donnée en entrée est une string, hein ? (sinon ça ne ferait pas trop de sens).
    Alors tu peux faire ça de deux façons :
    - splitter sur le E et caster ce qu'il y a avant et après vers les types que tu souhaites,
    - utiliser une expression régulière avec des groupes.
    Bonjour,

    Et merci pour ta participation !

    Alors non, c'est bien un double que j'ai comme entrée ! Je t'explique : J'ai une valeur (en double donc) mais on me demande une IHM spécifique pour renseigner cette valeur sous la forme de 2 TextBox : une pour x et l'autre pour y, si ma valeur double = x e y.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par dorinf Voir le message
    Bonjour,



    Pourquoi ne pas nous donner "l'ancien code". On pourra te donner notre avis dessus
    Bonjour,

    Et merci pour ta participation à toi aussi

    Tu as raison, j'aurai pu commencer par là, dsl. Alors, l'ancien code est en C++/CLI mais voici la "retranscription" que j'en ai fait ^^ :

    Pour passer de value à base+expo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int expo = Math.Log10( Math.Abs(value) );
    double base = value / Math.Pow( 10, expo );
    Pour passer de base+expo à value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    value = base * Math.Exp( expo );
    Qu'en penses tu ?

  6. #6
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    A un Math.Truncate près pour calculer l'exposant, c'est ce que j'aurais proposé. Donc non, ça ne me parait pas bancal.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Et du coup l'utilisateur entre x et y (d'où les TextBox), ou tu veux afficher x et y (des Label feraient l'affaire) même si le double en entrée ne s'y prête pas (et que du coup le cast vers des double/int n'a plus d'intérêt) ? Bon, pour pas trop traîner :

    * l'utilsateur saisit les x et y :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double finalValue = Convert.ToDouble(txtX.Text + "e" + txtY.Text);
    * on affiche sous cette forme dans deux Label (avec les cast qui servent à rien ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string[] tmp = originalValue.ToString("E").Split('E');
    double x = Convert.ToDouble(tmp[0]);
    int y = Convert.ToInt32(tmp[1]);
    lblX.Text = x.ToString();
    lblY.Text = y.ToString();
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Points : 51
    Points
    51
    Par défaut
    Bonjour à vous deux,

    @dorinf

    Ok, merci pour ton retour. J'ai un comportement un peu bancal et j'avais peur que cela vienne de la formule. Si ce n'est pas le cas, je dois avoir un problème du côté de mon utilisation. Je vais regarder ça de plus près !

    @jopopmk

    Ta solution est tentante et j'avais déjà commencé à regarder pour utiliser ToString. Mais si cela facilite la convertion, ça me pose problème au niveau de l'IHM. En effet, avec cette solution x et y seraient des string, du coup WPF ne me détectera plus les erreurs de syntaxes automatiquement, et je n'ai pas envie pour le moment de me lancer dans l'implémentation d'un système de validation WPF. Du coup, je garde cette solution de côté pour le moment

    Encore merci pour votre aide !!

    Je marque le sujet comme résolu pour le moment. Si jamais je galère, je reviendrai dans le coin

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

Discussions similaires

  1. convertir/arrondir double en int
    Par Nicolas_75 dans le forum Langage
    Réponses: 4
    Dernier message: 28/09/2006, 11h38
  2. convertir un double truc[] en vector<double> chose
    Par [Hugo] dans le forum SL & STL
    Réponses: 8
    Dernier message: 06/09/2006, 10h20
  3. convertir un double en CString
    Par cenedra dans le forum MFC
    Réponses: 2
    Dernier message: 08/08/2006, 09h04
  4. convertir un double en CString
    Par youngkoolboy dans le forum MFC
    Réponses: 4
    Dernier message: 22/05/2006, 18h54
  5. convertir un Double en integer
    Par amelhog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/08/2005, 09h08

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