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 :

chiffre avant la Virgule


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Par défaut chiffre avant la Virgule
    Salut le Forum;

    Je voudrais savoir si il y a une fonction en c# pour extraire par exemple le 2 du nombre decimal : 2,9870.

    En fait j'aimerais transformer ce chiffre en binaire et pour ce faire je dois tout d'abord transformer la partie avant la virgule et ensuite la partie apres la virgule et ainsi pour avoir la representation en binaire a la fin!!!

    Merci...

  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
    Tu peux utiliser Math.Floor pour obtenir la partie entière, et retrancher la partie entière à la valeur initiale pour obtenir la partie décimale (attention aux nombres négatifs : Floor renvoie le plus grand entier inférieur à l'argument, donc pour -2.5, Floor renverra -3... tu peux utiliser Ceiling à la place pour les nombres négatifs)

    Mais de toutes façons, si le but est de convertir en binaire, inutile de réinventer la roue : la classe BinaryWriter fait ça très bien (avec la méthode Write)

  3. #3
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Sans passer par un stream, il y a d'autres moyens.

    Sans mener à réinventer la roue :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    double v = 2.5;
    byte[] v_bytes = BitConverter.GetBytes(v);

    En ayant au final à réinventer la roue :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    double v = 2.5;
    var str = v.ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
    string[] str_i = str.Split(new string[]{System.Globalization.CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator}, StringSplitOptions.None);
    int i_a = int.Parse(str_i[0]);
    int i_b = str_i.Length > 1 ? int.Parse(str_i[1]) : 0;

    ps. on est obligé d'utiliser System.Globalization.CultureInfo.InvariantCulture car par exemple sur un OS anglais le séparateur des décimaux c'est '.' alors que sur un OS français c'est ','.

  4. #4
    Membre éclairé Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Par défaut
    Mais OUI!!! Merci pour les reponses!!

    Je pensais qu'il y avais pas d'autre alternatives....

    Comment on utilise BinaryWrite pour afficher la valeur binaire d'un nombre decimal? j'ai lu sur msdn mais c 'est plutot genre Stream mais moi je suis pas si loin!!!
    http://msdn.microsoft.com/fr-fr/libr...arywriter.aspx

    Merci!!

  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 : 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
    en fait il vaut mieux que tu utilises le BitConverter, comme indiqué par smyley, ce sera plus simple...

  6. #6
    Membre éclairé Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Par défaut
    Ouais j'ai essaye :

    double valeur = 3.24
    Int64 buffer = BitConverter.DoubleToInt64Bits((double)m.Fliess);
    string value = Convert.ToString(buffer, 2);
    Console.WriteLine("{0}", value);

    ca me donne value = "100000000001001111010111000010100011110101110000101000111101100"

    la reponse est elle correcte?

    j'ai fais une comparaison ici :
    http://babbage.cs.qc.edu/IEEE-754/Decimal.html

    comment avoir le resultat mais avec 32 bits?

    mon objectif est d'implementer une interface coe la page web precedente...
    J'espere que j'y arriverais !!!

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

Discussions similaires

  1. [AC-2007] Récupérer certains chiffres avant et après le virgule dans un nombre
    Par gerarddurand dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/12/2012, 15h26
  2. Commande pour afficher des chiffres apres la virgule
    Par manar dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2004, 18h28
  3. Chiffres après la virgule figés
    Par bondjames dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/03/2004, 23h09
  4. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 13h04
  5. Nb de chiffres après la virgule ?
    Par Thcan dans le forum C
    Réponses: 10
    Dernier message: 17/09/2003, 21h49

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