1. double
typ
Java tillhandahåller double
typen för att arbeta med reella (bråktal) tal. Den upptar 8 bytes
i minnet (dubbelt så många som int
typen) och kan lagra värden i intervallet från till . Som jämförelse: typen kan lagra ett värde i intervallet från till .-1.7*10308
+1.7*10308
int
-2*109
+2*109
I reella tal skrivs bråkdelen efter en decimalkomma. Till exempel 123,456 eller 2,5 eller 100,00 eller 0,01. När datorer hanterar sådana nummer kallar vi dem flyttal .
Förresten, förutom typen double
har vi även float
typen (som bara är 4 byte stor). Dess namn kommer från floating point . Och namnet double
kommer från double float . A double
är dubbelt så stor som a float
: 8 bytes
kontra 4
. Det kallas också för ett flyttal med dubbel precision .
2. Skapa en double
typ
Dubbeltypen används för att lagra reella tal. För att skapa en variabel i kod som kan lagra reella tal, måste du använda en sats som denna:
double name;
double
typ
Där namn är namnet på variabeln. Exempel:
Påstående | Beskrivning |
---|---|
|
En verklig price variabel skapas |
|
En verklig weight variabel skapas |
|
En verklig lightSpeed variabel skapas |
Som med int
typen kan du använda stenografi för att skapa flera double
variabler samtidigt:
double name 1, name 2, name 3;
double
variabler
Och till och med omedelbart tilldela dem värden:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
double
variabler
Exempel:
Påstående | Notera |
---|---|
|
Variabeln lagrar5.0 |
|
Variabeln lagrar2.0 |
|
3. Tilldela heltal och reella tal
Det skulle vara dåligt om heltal bara kunde tilldelas int
variabler och reella tal - bara till double
variabler. Vi vill kunna konvertera mellan de två sorterna av tal. Och Java ger denna förmåga.
För det första kan både reella tal och heltal tilldelas double
variabler. När man tilldelar heltal omvandlas de helt enkelt till reella tal. Viss noggrannhet kan naturligtvis gå förlorad i processen.
Påstående | Notera |
---|---|
|
Variabeln lagrar5.0 |
|
Variabeln lagrar2.0 |
|
Variabeln x lagrar1000000.0 |
För det andra, om ett heltal och ett reellt tal är inblandade i något uttryck, så konverteras heltal först till ett reellt tal och först därefter utförs operationen med det andra reella talet.
Påstående | Notera |
---|---|
|
Variabeln x lagrar5000.0 |
|
Numret 10 kommer att visas på skärmen |
|
Numret 10.0 kommer att visas på skärmen |
Och slutligen är det också möjligt att tilldela reella tal till int
variabler. När vi gör detta kasseras bråkdelen av det reella talet — talet avrundas nedåt till närmaste heltal.
Dessutom kräver kompilatorn att programmeraren explicit dokumenterar vad som händer (för att vara säker på att andra programmerare förstår att bråkdelen släpps). I allmänhet ser en sådan konvertering ut så här i kod:
integer_variable = (int)(real_number);
int
variabel
Exempel:
Påstående | Notera |
---|---|
|
Variabeln x lagrar5 |
|
Variabeln x lagrar5 |
|
Variabeln x lagrar11 |
4. Dela heltal och reella tal i Java
När man dividerar ett heltal med ett heltal, kasseras alltid resten. Hur kan vi då dividera 5
med 2
för att få 2.5
?
Till en början verkar det som att det rätta alternativet är:
double d = 5 / 2;
Men det är inte så enkelt. Problemet här är att Java-maskinen först beräknar värdet på 5 / 2
och först sedan tilldelar resultatet till d
variabeln. Och 5 / 2
operationen är heltalsdelning. Det betyder d
kommer att innehålla 2
eller, för att vara mer exakt,2.0
Den korrekta lösningen är att skriva minst ett av talen som ingår i divisionen som ett reellt tal (dvs med en decimalkomma):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
I varje uttryck d
kommer att innehålla2.5
Men vad händer om vi arbetar med variabler? Vad händer om vi har en sådan kod?:
int a = 5;
int b = 2;
double d = a / b;
Det finns en smart (och uppenbar) lösning här - tvinga Java-maskinen att konvertera variabler till reella tal genom att multiplicera dem med ett som ett reellt tal ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Observera att multiplikation och division har samma företräde och utförs från vänster till höger. Det betyder att det spelar roll var vi multiplicerar 1,0.
Exempel:
Påstående | Ordning för avrättning | Resultat |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION