1. double
taper
Java fournit le double
type pour travailler avec des nombres réels (fractionnaires). Il occupe 8 bytes
en mémoire (deux fois plus que le int
type) 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*10308
int
-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 double
type, nous avons également le float
type (qui ne fait que 4 octets). Son nom vient de virgule flottante . Et le nom double
vient de double float . A double
est deux fois plus grand que a float
: 8 bytes
versus 4
. Il est aussi appelé nombre à virgule flottante double précision .
2. Créer un double
type
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;
Où nom est le nom de la variable. Exemples:
Déclaration | Description |
---|---|
|
Une variable réelle price est créée |
|
Une variable réelle weight est créée |
|
Une variable réelle lightSpeed est créée |
Comme pour le int
type, vous pouvez utiliser un raccourci pour créer plusieurs double
variables simultanément :
double name 1, name 2, name 3;
Et même leur attribuer immédiatement des valeurs :
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
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 int
variables, et les nombres réels — uniquement aux double
variables. 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 à double
des 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 x variable 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 x variable stocke5000.0 |
|
Le numéro 10 s'affichera à l'écran |
|
Le numéro 10.0 s'affichera à l'écran |
Et enfin, il est également possible d'affecter des nombres réels aux int
variables. 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);
Exemples:
Déclaration | Note |
---|---|
|
La x variable stocke5 |
|
La x variable stocke5 |
|
La x variable 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 5
par 2
pour 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 / 2
et ensuite seulement affecte le résultat à la d
variable. Et l' 5 / 2
opération est la division entière. Cela signifie d
contiendra 2
ou, 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