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

Langage Java Discussion :

Réprésentation d'un float64


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 38
    Par défaut Réprésentation d'un float64
    Bonjour,

    Je voudrais savoir comment est codé un float64 en Java, svp.

    Par exemple pour le float32 :

    • 23 bits pour la mantisse
    • 8 bits pour l'exposant
    • 1 bit pour le signe


    Merci d'avance

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    le float de 64 bit en java est un double : un nombre flottant double précision selon la norme IEEE 754. Il est donc constitué de :
    • 52 bits de mantisse.
    • 11 bits d'exposant
    • 1 bit de signe

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 38
    Par défaut
    Ok! Merci beaucoup!

    Mais nouveau petit problème. Avec le code hexa ci-dessous (qui représente un float64), je suis sensé trouver 39640, mais je n'y arrive pas... Un petit coup de main serait la bienvenue.

    00 00 00 00 40 E3 B5 00

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    Comment rentre-tu ton code hexa dans ton double?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 38
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] myTab = new byte { 0x00, 0x00, 0x00, 0x00, 0x40, 0xe3, 0xb5, 0x00 };
    Sinon quelqu'un connait la formule mathématique pour calculer manuellement la valeur d'un float64 codée en binaire??

  6. #6
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    D'ou viens cette chaine? as tu des indications sur cette façon de coder?

  7. #7
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    pour plus d'infos sur la façon dont la jvm se représente les float...

    http://java.sun.com/docs/books/jvms/...doc.html#33377

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    A mon avis tu es bon pour coder la fonction à la main.
    double decodeFloat64(byte[] binDouble);

    voici de la doc pour comprendre comment est codé le float (ou double) en binaire:
    http://fr.wikipedia.org/wiki/Float

    Sinon, tu peux utiliser les méthodes nio, voir le code qu'elles utilisent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PipedOutputStream out = new PipedOutputStream()
    PipedInputStream in = new PipedInputStream(out);
    DataInputStream reader = new DAtaInputStream(in);
     
    out.write(myTab);
    in.readDouble();
    edit:
    pour ton exo, 39640 en binaire c'est 1.001101011e+1111 d'après ma calculette. Ça ne correspond pas a ton tableau de byte.

Discussions similaires

  1. Réprésentation formulaires / sous-formulaires
    Par GCAccess dans le forum VB.NET
    Réponses: 0
    Dernier message: 06/05/2013, 12h57
  2. Réprésentation distance taxonomique
    Par habasque dans le forum R
    Réponses: 0
    Dernier message: 03/04/2009, 14h31
  3. Choix de réprésentation des données
    Par oclone dans le forum IHM
    Réponses: 12
    Dernier message: 22/02/2008, 16h07
  4. Réponses: 1
    Dernier message: 19/04/2007, 21h52

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