1. double
typen
Java biedt het double
type voor het werken met reële (fractionele) getallen. Het neemt 8 bytes
geheugen in beslag (twee keer zoveel als het int
type) en kan waarden opslaan in het bereik van tot . Ter vergelijking: het type kan een waarde opslaan in het bereik van tot .-1.7*10308
+1.7*10308
int
-2*109
+2*109
In reële getallen wordt het breukdeel achter een komma geschreven. Bijvoorbeeld 123,456, of 2,5, of 100,00, of 0,01. Wanneer computers met dergelijke getallen omgaan, noemen we ze drijvende-kommagetallen .
Trouwens, naast het double
type hebben we ook het float
type (dat maar 4 bytes groot is). De naam komt van drijvende komma . En de naam double
komt van dubbele vlotter . A double
is twee keer zo groot als een float
: 8 bytes
versus 4
. Het wordt ook wel een drijvende-kommagetal met dubbele precisie genoemd .
2. Een double
type maken
Het dubbele type wordt gebruikt om reële getallen op te slaan. Om een variabele in code te maken die reële getallen kan opslaan, moet u een instructie als deze gebruiken:
double name;
Waar naam de naam van de variabele is. Voorbeelden:
Stelling | Beschrijving |
---|---|
|
Er wordt een reële price variabele gemaakt |
|
Er wordt een reële weight variabele gemaakt |
|
Er wordt een reële lightSpeed variabele gemaakt |
Net als bij het int
type kunt u steno gebruiken om meerdere double
variabelen tegelijk te maken:
double name 1, name 2, name 3;
En wijs er zelfs meteen waarden aan toe:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Voorbeelden:
Stelling | Opmerking |
---|---|
|
De variabele winkels5.0 |
|
De variabele winkels2.0 |
|
3. Toekennen van gehele getallen en reële getallen
Het zou slecht zijn als gehele getallen alleen aan variabelen konden worden toegewezen int
, en reële getallen alleen aan double
variabelen. We willen kunnen converteren tussen de twee soorten getallen. En Java biedt deze mogelijkheid.
Ten eerste kunnen zowel reële als gehele getallen aan double
variabelen worden toegewezen. Bij het toekennen van gehele getallen worden deze eenvoudig omgezet in reële getallen. Natuurlijk kan tijdens het proces enige nauwkeurigheid verloren gaan.
Stelling | Opmerking |
---|---|
|
De variabele winkels5.0 |
|
De variabele winkels2.0 |
|
De x variabele winkels1000000.0 |
Ten tweede, als een geheel getal en een reëel getal betrokken zijn bij een uitdrukking, dan wordt het gehele getal eerst geconverteerd naar een reëel getal en pas daarna wordt de bewerking met het andere reële getal uitgevoerd.
Stelling | Opmerking |
---|---|
|
De x variabele winkels5000.0 |
|
Het nummer 10 wordt weergegeven op het scherm |
|
Het nummer 10.0 wordt weergegeven op het scherm |
En tot slot is het ook mogelijk om reële getallen toe te wijzen aan int
variabelen. Wanneer we dit doen, wordt het gebroken deel van het reële getal weggegooid — het getal wordt naar beneden afgerond naar het dichtstbijzijnde gehele getal.
Bovendien vereist de compiler dat de programmeur expliciet documenteert wat er gebeurt (om er zeker van te zijn dat andere programmeurs begrijpen dat het fractionele deel wordt weggelaten). Over het algemeen ziet zo'n conversie er in code zo uit:
integer_variable = (int)(real_number);
Voorbeelden:
Stelling | Opmerking |
---|---|
|
De x variabele winkels5 |
|
De x variabele winkels5 |
|
De x variabele winkels11 |
4. Gehele getallen en reële getallen delen in Java
Bij het delen van een geheel getal door een geheel getal wordt de rest altijd weggegooid. Hoe kunnen we dan delen 5
door 2
om te krijgen 2.5
?
In eerste instantie lijkt het erop dat de juiste optie is:
double d = 5 / 2;
Maar zo eenvoudig is het niet. Het probleem hier is dat de Java-machine eerst de waarde berekent van 5 / 2
en pas daarna het resultaat toewijst aan de d
variabele. En de 5 / 2
bewerking is deling door gehele getallen. Dat betekent d
zal bevatten 2
of, om preciezer te zijn,2.0
De juiste oplossing is om ten minste één van de getallen die betrokken zijn bij de deling te schrijven als een reëel getal (dwz met een decimaalteken):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
In elk van de uitdrukkingen d
zal bevatten2.5
Maar wat als we met variabelen werken? Wat als we code als deze hebben?:
int a = 5;
int b = 2;
double d = a / b;
Er is hier een gelikte (en voor de hand liggende) oplossing: dwing de Java-machine om variabelen om te zetten in reële getallen door ze met één te vermenigvuldigen als een reëel getal ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Merk op dat vermenigvuldigen en delen dezelfde prioriteit hebben en van links naar rechts worden uitgevoerd. Dat betekent dat het uitmaakt waar we de 1,0 vermenigvuldigen.
Voorbeelden:
Stelling | Volgorde van executie | Resultaat |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION