web-dev-qa-db-fra.com

Que signifie exactement Double en Java?

Je suis extrêmement nouveau à Java et je voulais juste confirmer ce qu'est Double? Est-il similaire à Float ou Int? Toute aide serait appréciée. Je vois aussi parfois les majuscules Double et d'autres fois les minuscules double. Si quelqu'un pouvait clarifier ce que cela signifie, ce serait génial!

20
maclunian

Double est une classe wrapper,

La classe Double encapsule une valeur du type primitif double dans un objet. Un objet de type Double contient un seul champ dont le type est double.

En outre, cette classe fournit plusieurs méthodes pour convertir un double en chaîne et une chaîne en double, ainsi que d'autres constantes et méthodes utiles lors du traitement d'un double.

Le type de données double ,

Le type de données double est une virgule flottante IEEE 754 64 bits double précision. Sa plage de valeurs est comprise entre 4,94065645841246544e-324d et 1,79769313486231570e + 308d (positive ou négative). Pour les valeurs décimales, ce type de données est généralement le choix par défaut. Comme mentionné ci-dessus, ce type de données ne doit jamais être utilisé pour des valeurs précises, telles que la devise.

Vérifiez chaque type de données avec leurs plages: Java's Primitive Data Types .


Remarque importante: Si vous pensez utiliser le double pour des valeurs précises, vous devez repenser avant de l'utiliser. Java Traps: double

29
sgokhales

Dans un commentaire sur la réponse de @ paxdiablo, vous avez demandé:

"Donc en gros, est-il préférable d'utiliser Double que Float?"

C'est une question compliquée. Je vais le traiter en deux parties


Décider entre double et float

D'une part, un double occupe 8 octets contre 4 octets pour un float. Si vous en avez plusieurs, cela peut être important, mais cela peut également n'avoir aucun impact. (Considérez le cas où les valeurs se trouvent dans des champs ou des variables locales sur une machine 64 bits et où la JVM les aligne sur des limites de 64 bits.) De plus, l'arithmétique à virgule flottante avec les valeurs double est généralement plus lente qu'avec float valeurs ... mais encore une fois cela dépend du matériel.

D'un autre côté, un double peut représenter des nombres plus grands (et plus petits) qu'un float et peut les représenter avec plus de deux fois la précision. Pour plus de détails, reportez-vous à Wikipedia .

La question délicate est de savoir si vous avez réellement besoin de la plage supplémentaire et de la précision d'un double. Dans certains cas, il est évident que vous en avez besoin. Dans d'autres, ce n'est pas si évident. Par exemple, si vous effectuez des calculs tels que l'inversion d'une matrice ou le calcul d'un écart-type, la précision supplémentaire peut être critique. D'un autre côté, dans certains cas, même double ne vous donnera pas assez de précision. (Et méfiez-vous du piège d'attendre que float et double vous donnent une représentation exacte. Ils ne le feront pas et ils ne peuvent pas!)

Il existe une branche des mathématiques appelée analyse numérique qui traite des effets des erreurs d'arrondi, etc. dans les calculs numériques pratiques. C'était une partie standard des cours d'informatique ... dans les années 1970.


Décider entre Double et Float

Pour le cas Double versus Float, les problèmes de précision et de plage sont les mêmes que pour double versus float, mais les mesures de performances relatives seront légèrement différent.

  • Un Double (sur une machine 32 bits) prend généralement 16 octets + 4 octets pour la référence, contre 12 + 4 octets pour un Float. Comparez cela à 8 octets contre 4 octets pour le cas double versus float. Le rapport est donc de 5 à 4 contre 2 à 1.

  • L'arithmétique impliquant Double et Float implique généralement le déréférencement du pointeur et la création d'un nouvel objet pour contenir le résultat (selon les circonstances). Ces frais généraux supplémentaires affectent également les ratios en faveur du cas Double.


Exactitude

Cela dit, la chose la plus importante est l'exactitude , et cela généralement signifie obtenir la réponse la plus précise. Et même si la précision n'est pas critique, il n'est généralement pas faux d'être "trop précis". Donc, la "règle d'or" consiste à utiliser double de préférence à float, À MOINS QU'il n'y ait priorité des exigences de performances ET vous avez des preuves solides que l'utilisation de float fera une différence par rapport à ces exigences.

22
Stephen C

Un double est un IEEE754 nombre à virgule flottante double précision, semblable à un flottant mais avec une plage et une précision plus grandes.

Les nombres à simple précision IEEE754 ont 32 bits (1 signe, 8 exposants et 23 bits de mantisse) tandis que les nombres à double précision ont 64 bits (1 signe, 11 exposants et 52 bits de mantisse).

Un Double in Java est la version de classe du type de base double - vous pouvez utiliser des doubles mais, si vous voulez faire quelque chose avec eux qui nécessite qu'ils soient un objet ( comme les mettre dans une collection), vous devrez les placer dans un objet Double.

3
paxdiablo