Bästa svaret
Skillnad svartvitt kort och lång int
Skillnaden är väldigt liten men kan vara mycket viktig i vissa fall. När du programmerar det näst viktigaste målet (efter att programmet gör vad det ska) är att spara minne så att programmet körs så snabbt som möjligt. Det är här ditt nyckelord ”lång” kommer in. Långt är ett heltal men heltal är inte exakt en lång förståelse? Det finns också en ”kort”. Nu refereras vanligtvis till dessa med int efter dem men det krävs inte. skillnaden mellan dem är deras storlek. Beroende på dator men i de flesta fall är en ”kort” två byte en ”lång” är fyra byte och en ”int” kan vara två eller fyra byte. Det är viktigt i program att du förklarar det kort eller lång om du vet exakt hur stort numret kommer att bli och hur ofta det kommer att modifieras så att du kan spara så mycket minne som möjligt. Nu så långt som det intervall som beror på storleken på intet om det är två eller fyra byte. Här är en tabell för referensstorlekar och värden.
typstorlek
kort int 2 byte -32,768 till 32,767
lång int 4 byte -2,147,483,648 till 2,147,483,647
int (16 bitar) 2 byte -32,768 till 32,767
int (32 bitar) 4 byte -2,147 , 483,648 till 2147,483,647
Skillnad svartvitt flytande och dubbelt
Flytpunktsnummer, även känd som riktiga siffror används vid utvärdering av uttryck som kräver bråkprecision. Beräkningar som kvadratrot eller transcendental som sinus och cosinus resulterar till exempel i ett värde vars precision kräver en flytpunkt. Java implementerar standarduppsättningen (IEEE – 754) av flytande punkttyper och operatörer. Det finns två typer av flytpunkttyper, float och double, som representerar enkel- och dubbelprecisionsnummer. Deras bredd och intervall visas här:
Namnbredd i bitintervall
double 64 1 .7e – 308 to 1.7e + 308
float 32 3 .4e – 038 to 3.4e + 038
Var och en av dessa flytande punkttyper undersöks därefter.
float
Typflottan anger ett enda precisionsvärde som använder 32 bitars lagring. Enkel precision är snabbare på vissa processorer och tar hälften så mycket utrymme som dubbel precision, men blir exakt när värdena är antingen mycket stora eller mycket små. Variabler av typen float är användbara när du behöver en delkomponent, men kräver inte stor grad av precision. Till exempel kan float vara användbart när du representerar dollar och cent.
Här är några exempel på floatvariabler deklarationer:
float hightemp, lowtemp;
double
Dubbel precision, som betecknas med det dubbla nyckelordet, använder 64 bitar för att lagra ett värde. Dubbel precision är faktiskt snabbare än enstaka precision på vissa moderna processorer som har optimerats för matematik med hög hastighet beräkningar. Alla transcendentala matematiska funktioner, som sin (), cos () och sqrt (), returnerar dubbla värden. När du behöver behålla noggrannhet över många iterativa beräkningar eller manipulerar stora värden är dubbelt det bästa valet .
Här är ett kort program som använder dubbla variabler för att beräkna en cirkels area:
// Beräkna th område av en cirkel.
klass Område {
offentligt statiskt tomrum huvud (String args []) {
dubbel pi, r, a;
r = 10,8; // cirkelradie
pi = 3.1416; // pi, ungefär
a = pi * r * r; // beräkningsområde
System.out.println (”Cirkelområdet är” + a);
}
}
Svar
Som vanligt beror det på . Den exakta storleken på shorts och längder lämnas till kompilatorns implementerare, som väljer representationer som bäst passar målarkitekturen. Det är möjligt (men osannolikt) att sizeof(short) == sizeof(int) == sizeof(long)
, vilket betyder att de alla är desamma. Den enda garantin du har är att storleken på en kort är mindre än eller lika med storleken på en lång. För exakta storlekar, använd
rubriken; eller för att ta bort de fula detaljerna, använd std::numeric\_limits
-mallen från
.
Liknande resonemang gäller för float och dubbelt, men här är det mer troligt att float
representerar ett enda precisions flytpunkt (4 byte) och double
ett flytande punktnummer med dubbel precision (8 byte).För mycket programvara har skrivits som antar IEEE 754, så kompilatorförfattare är mindre benägna att avvika från reglerna.