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 :

nombre réels -simple et double précision


Sujet :

Langage Java

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    986
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 986
    Par défaut nombre réels -simple et double précision
    Bonjour,

    Pourriez-vous me dire quelle est la réélle différence entre des nombres flottants à simple précision ( type float)et ceux à double précision( type double), à part leur plage de valeurs différente.
    En fait, combien de nombres après la virgule acceptent exactement les nombres flottants à simple précision et combien en acceptent les nombres à double précision?

    Merci beaucoup de votre aide.

    Cordialement.

    Nathalie

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    C'est pas comme ça que ça marche.

    C'est un nombre de chiffres significatifs. Un double a plus de deux fois plus de chiffres significatifs qu'un float. (Un double a 52 bits significatifs, un float en a 23.)

    Donc, combien après la virgule, ça dépend où est la virgule, d'où le terme de virgule flottante.

    Si on représente un milliard puissance 50, aucun chiffre n'est représenté après la virgule, et un bon paquet ne le sont pas avant la virgule non plus. Si on représente un millionnième puissance 50, les chiffres sont tous après la virgule, et loin derrière.

    Bon, et la vraie différence entre un float et un double, c'est qu'un float n'est pas assez précis. Donc, à moins que ça pose des problèmes de perfs ou de mémoire, il faut utiliser un double.

    Pour les explications en profondeur, Wikipédia a un article très satisfaisant.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Si jamais tu à des problèmes de précision, tu peux aussi regarder du cote de la classe BigDecimal.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Bon, et la vraie différence entre un float et un double, c'est qu'un float n'est pas assez précis. Donc, à moins que ça pose des problèmes de perfs ou de mémoire, il faut utiliser un double.
    Je dirais plutôt : Si le float n'est pas assez précis (en 3D par exemple), il faut utiliser le double

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    En pratique, un float n'est presque jamais assez précis. Utiliser un float sans avoir songé aux conséquences est un moyen sûr d'avoir des résultats bizarres au moment où on croyait tout faire marcher. Si la valeur doit être affichée à l'écran, ou transmise sous forme de texte à quelque chose, ou qu'elle sert à calculer un résultat numérique qui le sera ; alors utiliser un float est une source probable de problèmes.

    Mais j'imagine qu'en 3D, un float est très bien, vu que les valeurs ne sont utilisées qu'en interne pour l'affichage de la scène.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par thelvin Voir le message
    En pratique, un float n'est presque jamais assez précis. Utiliser un float sans avoir songé aux conséquences est un moyen sûr d'avoir des résultats bizarres au moment où on croyait tout faire marcher. Si la valeur doit être affichée à l'écran, ou transmise sous forme de texte à quelque chose, ou qu'elle sert à calculer un résultat numérique qui le sera ; alors utiliser un float est une source probable de problèmes.

    Mais j'imagine qu'en 3D, un float est très bien, vu que les valeurs ne sont utilisées qu'en interne pour l'affichage de la scène.
    Ceci dit, si les données manipulées ont recours simplement a des réels utilisant quelques chiffres après la virgule, y a-t-il toujours un intérêt a utiliser double, ou une réelle faiblesse de float que je ne connaîtrais pas ?

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Citation Envoyé par PierreAd Voir le message
    Ceci dit, si les données manipulées ont recours simplement a des réels utilisant quelques chiffres après la virgule, y a-t-il toujours un intérêt a utiliser double, ou une réelle faiblesse de float que je ne connaîtrais pas ?
    Il y a toujours un intérêt à utiliser double, c'est plus précis et il y a moins de questions à se poser. La question étant, est-ce que cet intérêt surpasse le coût d'utiliser double au lieu de float ?

    Pour répondre à la question, oui, float peut très bien faire n'importe quoi avec des nombres utilisant "quelques chiffres après la virgule" (ce - n'est - pas - comme - ça - que - ça - marche !) Par exemple, float et double ont du mal avec le nombre 0.1, et si on s'en sert en float, on aura généralement des surprises à l'affichage.
    Double aussi a ce genre de soucis, mais moins. Sa précision est telle qu'à l'affichage, quand on ignore un peu les nombres peu significatifs, ça n'a pas l'air bizarre. Et puis, surtout, la précision est bonne et le calcul en est moins affecté.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Pour répondre à la question, oui, float peut très bien faire n'importe quoi avec des nombres utilisant "quelques chiffres après la virgule" (ce - n'est - pas - comme - ça - que - ça - marche !)
    Oui oui j'avais bien compris tout cela, c'était pour simplifier mon exemple et ne pas avoir a préciser "des nombres d'une taille limitée et avec peu de chiffres après la virgule, dans la limite des spécifications java du type float, blah blah "

Discussions similaires

  1. Hexadécimal, réel à double précision
    Par takatik dans le forum Général Java
    Réponses: 2
    Dernier message: 15/11/2014, 15h04
  2. Convertir un Réel Simple ou Double du DOS
    Par netoale dans le forum Débuter
    Réponses: 6
    Dernier message: 21/10/2009, 08h53
  3. Réponses: 10
    Dernier message: 13/10/2008, 11h20
  4. Modifcation de la précision d'affichage d'un nombre réel
    Par developpeur82 dans le forum MATLAB
    Réponses: 2
    Dernier message: 13/04/2007, 12h33
  5. Simple et double Précision en C
    Par r-o-m-z dans le forum C
    Réponses: 4
    Dernier message: 22/10/2006, 13h16

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