1. doubletype

Java gir doubletypen for arbeid med reelle (brøk) tall. Den opptar 8 bytesi minnet (dobbelt så mange som inttypen) og kan lagre verdier i området fra til . Til sammenligning: typen kan lagre en verdi i området fra til .-1.7*10308+1.7*10308int-2*109+2*109

I reelle tall skrives brøkdelen etter et desimaltegn. For eksempel 123.456 eller 2.5 eller 100.00 eller 0.01. Når datamaskiner håndterer slike tall, kaller vi dem flyttall .

Forresten, i tillegg til typen doublehar vi også floattypen (som kun er 4 byte stor). Navnet kommer fra flytende punkt . Og navnet doublekommer fra double float . A doubleer dobbelt så stor som en float: 8 bytesversus 4. Det kalles også et flyttall med dobbel presisjon .


2. Opprette en doubletype

Den doble typen brukes til å lagre reelle tall. For å lage en variabel i kode som kan lagre reelle tall, må du bruke et utsagn som dette:

double name;
Opprette en doubletype

Der navn er navnet på variabelen. Eksempler:

Uttalelse Beskrivelse
double price;
En reell pricevariabel opprettes
double weight;
En reell weightvariabel opprettes
double lightSpeed;
En reell lightSpeedvariabel opprettes

Som med inttypen, kan du bruke stenografi for å lage flere doublevariabler samtidig:

double name 1, name 2, name 3;
Opprette flere doublevariabler

Og til og med umiddelbart tilordne verdier til dem:

double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Opprette og initialisere flere doublevariabler

Eksempler:

Uttalelse Merk
double price = 5.0;
Variabelen lagrer5.0
double weight = 2;
Variabelen lagrer2.0
double x = 1.0, y = 2.0, z = 3.0;

3. Tilordne heltall og reelle tall

Det ville være dårlig om heltall bare kunne tilordnes intvariabler, og reelle tall - bare til doublevariabler. Vi ønsker å kunne konvertere mellom de to typene tall. Og Java gir denne muligheten.

For det første kan både reelle tall og heltall tilordnes doublevariabler. Når du tildeler heltall, blir de ganske enkelt konvertert til reelle tall. Selvfølgelig kan en viss nøyaktighet gå tapt i prosessen.

Uttalelse Merk
double price = 5.0;
Variabelen lagrer5.0
double weight = 2;
Variabelen lagrer2.0
int t = 1000;
double x =  t * t;

Variabelen xlagrer1000000.0

For det andre, hvis et heltall og et reelt tall er involvert i et eller annet uttrykk, blir heltallet først konvertert til et reelt tall og først deretter utføres operasjonen med det andre reelle tallet.

Uttalelse Merk
int t = 1000;
double x = t * 5.0;

Variabelen xlagrer5000.0
System.out.println(5 * 2);
Nummeret 10vil vises på skjermen
System.out.println(5 * 2.0);
Nummeret 10.0vil vises på skjermen

Og til slutt er det også mulig å tilordne reelle tall til intvariabler. Når vi gjør dette, blir brøkdelen av det reelle tallet forkastet - tallet rundes ned til nærmeste hele tall.

I tillegg krever kompilatoren at programmereren eksplisitt dokumenterer hva som skjer (for å være sikker på at andre programmerere forstår at brøkdelen blir droppet). Generelt ser en slik konvertering slik ut i kode:

integer_variable = (int)(real_number);
Tilordne et reelt tall til en intvariabel

Eksempler:

Uttalelse Merk
int x = (int)(5.5);
Variabelen xlagrer5
double a = 5.999;
int x = (int)(a);
Variabelen xlagrer5
double a = 5.999;
int b = 2;
int x = (int)(a * b);
Variabelen xlagrer11


4. Å dele heltall og reelle tall i Java

Når du deler et heltall med et heltall, blir resten alltid forkastet. Hvordan kan vi dele 5med 2for å få 2.5?

Til å begynne med ser det ut til at det riktige alternativet er:

double d = 5 / 2;

Men det er ikke så enkelt. Problemet her er at Java-maskinen først beregner verdien av 5 / 2og først deretter tilordner resultatet til variabelen d. Og 5 / 2operasjonen er heltallsdivisjon. Det betyr d at vil inneholde 2eller, for å være mer presis,2.0

Den riktige løsningen er å skrive minst ett av tallene som er involvert i divisjonen som et reelt tall (dvs. med et desimaltegn):

double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;

I hvert av uttrykkene d vil inneholde2.5

Men hva om vi jobber med variabler? Hva om vi har kode som dette?:

int a = 5;
int b = 2;
double d = a / b;

Det er en smart (og åpenbar) løsning her - tving Java-maskinen til å konvertere variabler til reelle tall ved å multiplisere dem med én som et reelt tall ( 1.0)

int a = 5;
int b = 2;
double d = a * 1.0 / b;

Merk at multiplikasjon og divisjon har lik forrang, og utføres fra venstre til høyre. Det betyr at det betyr noe hvor vi multipliserer 1,0.

Eksempler:

Uttalelse Rekkefølge 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