1. double
type
Java gir double
typen for arbeid med reelle (brøk) tall. Den opptar 8 bytes
i minnet (dobbelt så mange som int
typen) 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*10308
int
-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 double
har vi også float
typen (som kun er 4 byte stor). Navnet kommer fra flytende punkt . Og navnet double
kommer fra double float . A double
er dobbelt så stor som en float
: 8 bytes
versus 4
. Det kalles også et flyttall med dobbel presisjon .
2. Opprette en double
type
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;
Der navn er navnet på variabelen. Eksempler:
Uttalelse | Beskrivelse |
---|---|
|
En reell price variabel opprettes |
|
En reell weight variabel opprettes |
|
En reell lightSpeed variabel opprettes |
Som med int
typen, kan du bruke stenografi for å lage flere double
variabler samtidig:
double name 1, name 2, name 3;
Og til og med umiddelbart tilordne verdier til dem:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Eksempler:
Uttalelse | Merk |
---|---|
|
Variabelen lagrer5.0 |
|
Variabelen lagrer2.0 |
|
3. Tilordne heltall og reelle tall
Det ville være dårlig om heltall bare kunne tilordnes int
variabler, og reelle tall - bare til double
variabler. 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 double
variabler. 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 |
---|---|
|
Variabelen lagrer5.0 |
|
Variabelen lagrer2.0 |
|
Variabelen x lagrer1000000.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 |
---|---|
|
Variabelen x lagrer5000.0 |
|
Nummeret 10 vil vises på skjermen |
|
Nummeret 10.0 vil vises på skjermen |
Og til slutt er det også mulig å tilordne reelle tall til int
variabler. 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);
Eksempler:
Uttalelse | Merk |
---|---|
|
Variabelen x lagrer5 |
|
Variabelen x lagrer5 |
|
Variabelen x lagrer11 |
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 5
med 2
for å 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 / 2
og først deretter tilordner resultatet til variabelen d
. Og 5 / 2
operasjonen er heltallsdivisjon. Det betyr d
at vil inneholde 2
eller, 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 |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION