1. doubletype

Java giver doubletypen til at arbejde med reelle (brøk)tal. Den optager 8 bytesi hukommelsen (dobbelt så mange som inttypen) 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*10308int-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.

doubleI øvrigt har vi udover typen også floattypen (som kun er 4 bytes stor). Dens navn kommer fra floating point . Og navnet doublekommer fra double float . A doubleer dobbelt så stor som a float: 8 bytesversus 4. Det kaldes også et flydende tal med dobbelt præcision .


2. Oprettelse af en doubletype

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;
Oprettelse af en doubletype

Hvor navn er navnet på variablen. Eksempler:

Udmelding Beskrivelse
double price;
priceDer skabes en reel variabel
double weight;
weightDer skabes en reel variabel
double lightSpeed;
lightSpeedDer skabes en reel variabel

Som med inttypen kan du bruge stenografi til at oprette flere doublevariabler samtidigt:

double name 1, name 2, name 3;
Oprettelse af flere doublevariabler

Og endda straks tildele værdier til dem:

double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Oprettelse og initialisering af flere doublevariabler

Eksempler:

Udmelding Bemærk
double price = 5.0;
De variable gemmer5.0
double weight = 2;
De variable gemmer2.0
double x = 1.0, y = 2.0, z = 3.0;

3. Tildeling af heltal og reelle tal

Det ville være dårligt, hvis heltal kun kunne tildeles intvariabler og reelle tal - kun til doublevariable. 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 doublevariabler. 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
double price = 5.0;
De variable gemmer5.0
double weight = 2;
De variable gemmer2.0
int t = 1000;
double x =  t * t;

De xvariable 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
int t = 1000;
double x = t * 5.0;

De xvariable gemmer5000.0
System.out.println(5 * 2);
Nummeret 10vil blive vist på skærmen
System.out.println(5 * 2.0);
Nummeret 10.0vil blive vist på skærmen

Og endelig er det også muligt at tildele reelle tal til intvariable. 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);
Tildeling af et reelt tal til en intvariabel

Eksempler:

Udmelding Bemærk
int x = (int)(5.5);
De xvariable gemmer5
double a = 5.999;
int x = (int)(a);
De xvariable gemmer5
double a = 5.999;
int b = 2;
int x = (int)(a * b);
De xvariable 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 5med 2for 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 dvariablen. Og 5 / 2operationen er heltalsdeling. Det betyder d vil indeholde 2eller, 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
int a = 5;
int b = 2;
double d = 1.0 * a / b;
(1.0 * a) / b; 2.5
int a = 5;
int b = 2;
double d = a * 1.0 / b;
(a * 1.0) / b; 2.5
int a = 5;
int b = 2;
double d = a / b * 1.0;
(a / b) * 1.0; 2.0