1. doubletaper
Java fournit le doubletype pour travailler avec des nombres réels (fractionnaires). Il occupe 8 bytesen mémoire (deux fois plus que le inttype) et peut stocker des valeurs comprises entre et . À titre de comparaison : le type peut stocker une valeur comprise entre et .-1.7*10308+1.7*10308int-2*109+2*109
Dans les nombres réels, la partie fractionnaire est écrite après un point décimal. Par exemple, 123,456, ou 2,5, ou 100,00, ou 0,01. Lorsque les ordinateurs traitent de tels nombres, nous les appelons des nombres à virgule flottante .
Soit dit en passant, en plus du doubletype, nous avons également le floattype (qui ne fait que 4 octets). Son nom vient de virgule flottante . Et le nom doublevient de double float . A doubleest deux fois plus grand que a float: 8 bytesversus 4. Il est aussi appelé nombre à virgule flottante double précision .
2. Créer un doubletype
Le type double est utilisé pour stocker des nombres réels. Pour créer une variable dans le code pouvant stocker des nombres réels, vous devez utiliser une instruction comme celle-ci :
double name;
doublegenre
Où nom est le nom de la variable. Exemples:
| Déclaration | Description |
|---|---|
|
Une variable réelle priceest créée |
|
Une variable réelle weightest créée |
|
Une variable réelle lightSpeedest créée |
Comme pour le inttype, vous pouvez utiliser un raccourci pour créer plusieurs doublevariables simultanément :
double name 1, name 2, name 3;
doublevariables
Et même leur attribuer immédiatement des valeurs :
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
doublevariables
Exemples:
| Déclaration | Note |
|---|---|
|
La variable stocke5.0 |
|
La variable stocke2.0 |
|
3. Affectation d'entiers et de nombres réels
Ce serait mauvais si les nombres entiers pouvaient être assignés uniquement aux intvariables, et les nombres réels — uniquement aux doublevariables. Nous voulons pouvoir convertir entre les deux types de nombres. Et Java fournit cette capacité.
Tout d'abord, des nombres réels et entiers peuvent être affectés à doubledes variables. Lors de l'attribution d'entiers, ils sont simplement convertis en nombres réels. Bien sûr, une certaine précision peut être perdue au cours du processus.
| Déclaration | Note |
|---|---|
|
La variable stocke5.0 |
|
La variable stocke2.0 |
|
La xvariable stocke1000000.0 |
Deuxièmement, si un entier et un nombre réel sont impliqués dans une expression, alors l'entier est d'abord converti en un nombre réel et alors seulement l'opération avec l'autre nombre réel est effectuée.
| Déclaration | Note |
|---|---|
|
La xvariable stocke5000.0 |
|
Le numéro 10s'affichera à l'écran |
|
Le numéro 10.0s'affichera à l'écran |
Et enfin, il est également possible d'affecter des nombres réels aux intvariables. Lorsque nous faisons cela, la partie fractionnaire du nombre réel est ignorée - le nombre est arrondi au nombre entier le plus proche.
De plus, le compilateur demande au programmeur de documenter explicitement ce qui se passe (pour être sûr que les autres programmeurs comprennent que la partie fractionnaire est supprimée). En général, une telle conversion ressemble à ceci dans le code :
integer_variable = (int)(real_number);
intvariable
Exemples:
| Déclaration | Note |
|---|---|
|
La xvariable stocke5 |
|
La xvariable stocke5 |
|
La xvariable stocke11 |
4. Diviser des nombres entiers et des nombres réels en Java
Lors de la division d'un entier par un entier, le reste est toujours ignoré. Comment pouvons-nous alors diviser 5par 2pour obtenir 2.5?
Au début, il semble que la bonne option soit:
double d = 5 / 2;
Mais ce n'est pas si simple. Le problème ici est que la machine Java calcule d'abord la valeur de 5 / 2et ensuite seulement affecte le résultat à la dvariable. Et l' 5 / 2opération est la division entière. Cela signifie d contiendra 2ou, pour être plus précis,2.0
La bonne solution est d'écrire au moins un des nombres impliqués dans la division sous la forme d'un nombre réel (c'est-à-dire avec un point décimal) :
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
Dans chacune des expressions, d contiendra2.5
Mais que se passe-t-il si nous travaillons avec des variables ? Et si nous avions un code comme celui-ci ? :
int a = 5;
int b = 2;
double d = a / b;
Il existe une solution astucieuse (et évidente) ici - forcez la machine Java à convertir les variables en nombres réels en les multipliant par un en tant que nombre réel ( 1.0)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Notez que la multiplication et la division ont la même priorité et sont effectuées de gauche à droite. Cela signifie qu'il importe où nous multiplions le 1.0.
Exemples:
| Déclaration | Ordre d'exécution | Résultat |
|---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION