1. double
type
Java giver double
typen til at arbejde med reelle (brøk)tal. Den optager 8 bytes
i hukommelsen (dobbelt så mange som int
typen) og kan gemme værdier i området fra til . Til sammenligning: typen kan gemme en værdi i området fra til .-1.7*10308
+1.7*10308
int
-2*109
+2*109
I reelle tal skrives brøkdelen efter en decimal. For eksempel 123,456 eller 2,5 eller 100,00 eller 0,01. Når computere beskæftiger sig med sådanne numre, kalder vi dem floating point -numre.
double
I øvrigt har vi udover typen også float
typen (som kun er 4 bytes stor). Dens navn kommer fra floating point . Og navnet double
kommer fra double float . A double
er dobbelt så stor som a float
: 8 bytes
versus 4
. Det kaldes også et flydende tal med dobbelt præcision .
2. Oprettelse af en double
type
Den dobbelte type bruges til at gemme reelle tal. For at oprette en variabel i kode, der kan gemme reelle tal, skal du bruge en sætning som denne:
double name;
Hvor navn er navnet på variablen. Eksempler:
Udmelding | Beskrivelse |
---|---|
|
price Der skabes en reel variabel |
|
weight Der skabes en reel variabel |
|
lightSpeed Der skabes en reel variabel |
Som med int
typen kan du bruge stenografi til at oprette flere double
variabler samtidigt:
double name 1, name 2, name 3;
Og endda straks tildele værdier til dem:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Eksempler:
Udmelding | Bemærk |
---|---|
|
De variable gemmer5.0 |
|
De variable gemmer2.0 |
|
3. Tildeling af heltal og reelle tal
Det ville være dårligt, hvis heltal kun kunne tildeles int
variabler og reelle tal - kun til double
variable. Vi ønsker at kunne konvertere mellem de to slags tal. Og Java giver denne evne.
For det første kan både reelle tal og heltal tildeles double
variabler. Når man tildeler heltal, konverteres de blot til reelle tal. Selvfølgelig kan en vis nøjagtighed gå tabt i processen.
Udmelding | Bemærk |
---|---|
|
De variable gemmer5.0 |
|
De variable gemmer2.0 |
|
De x variable gemmer1000000.0 |
For det andet, hvis et heltal og et reelt tal er involveret i et eller andet udtryk, så konverteres hele tallet først til et reelt tal, og først derefter udføres operationen med det andet reelle tal.
Udmelding | Bemærk |
---|---|
|
De x variable gemmer5000.0 |
|
Nummeret 10 vil blive vist på skærmen |
|
Nummeret 10.0 vil blive vist på skærmen |
Og endelig er det også muligt at tildele reelle tal til int
variable. Når vi gør dette, kasseres brøkdelen af det reelle tal - tallet rundes ned til nærmeste hele tal.
Derudover kræver compileren, at programmøren eksplicit dokumenterer, hvad der sker (for at være sikker på, at andre programmører forstår, at brøkdelen bliver droppet). Generelt ser en sådan konvertering sådan ud i kode:
integer_variable = (int)(real_number);
Eksempler:
Udmelding | Bemærk |
---|---|
|
De x variable gemmer5 |
|
De x variable gemmer5 |
|
De x variable gemmer11 |
4. Opdeling af heltal og reelle tal i Java
Når man dividerer et heltal med et heltal, kasseres resten altid. Hvordan kan vi så dividere 5
med 2
for at få 2.5
?
I første omgang ser det ud til, at den rigtige mulighed er:
double d = 5 / 2;
Men det er ikke så enkelt. Problemet her er, at Java-maskinen først beregner værdien af 5 / 2
og først derefter tildeler resultatet til d
variablen. Og 5 / 2
operationen er heltalsdeling. Det betyder d
vil indeholde 2
eller, for at være mere præcis,2.0
Den korrekte løsning er at skrive mindst et af de tal, der indgår i divisionen, som et reelt tal (dvs. med et decimaltegn):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
I hvert af udtryk, d
vil indeholde2.5
Men hvad nu hvis vi arbejder med variabler? Hvad hvis vi har en kode som denne?:
int a = 5;
int b = 2;
double d = a / b;
Der er en smart (og indlysende) løsning her - tving Java-maskinen til at konvertere variabler til reelle tal ved at gange dem med en som et reelt tal ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Bemærk, at multiplikation og division har samme forrang og udføres fra venstre mod højre. Det betyder, at det betyder noget, hvor vi gange 1,0.
Eksempler:
Udmelding | Ordre for henrettelse | Resultat |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION