Bedste svar
Forskel sort / hvid kort og lang int
Nå er forskellen meget lille, men kan være meget vigtig i nogle tilfælde. Når du programmerer det næstvigtigste mål (efter at programmet har gjort det, det skal), er det at gemme hukommelse for at få programmet til at køre så hurtigt som muligt. Det er her dit nøgleord “lang” kommer ind. Langt er et heltal, men heltal er ikke nøjagtigt en lang forståelse? Der er også en “kort”. Nu refereres der normalt til disse med int efter dem, men det er ikke nødvendigt. forskellen mellem dem er deres størrelse. Afhængigt af computeren, men i de fleste tilfælde er en “kort” to byte, en “lang” er fire byte og en “int” kan være to eller fire byte. Det er vigtigt i programmer, at du erklærer det kort eller langt, hvis du ved nøjagtigt, hvor stort antallet skal være, og hvor ofte det skal ændres, så du kan spare så meget hukommelse som muligt. Nu så langt som det interval, der afhænger af størrelsen på intet, om det er to eller fire byte. Her er en tabel til referencestørrelser og værdier.
type størrelsesområde
kort int 2 bytes -32,768 til 32,767
langt int 4 bytes -2,147,483,648 til 2,147,483,647
int (16 bit) 2 bytes -32,768 til 32,767
int (32 bit) 4 bytes -2,147 , 483.648 til 2.147.483.647
Forskel sort / hvid flydende og dobbelt
Flydepunktsnumre, også kendt som reelle tal bruges til evaluering af udtryk, der kræver brøkpræcision. For eksempel resulterer beregninger som kvadratrod eller transcendental som sinus og cosinus i en værdi, hvis præcision kræver en flydende punkt-type. Java implementerer standardsættet (IEEE – 754) af flydende punkttyper og operatører. Der er to slags flydende punkttyper, float og double, som repræsenterer henholdsvis enkelt- og dobbeltpræcisionsnumre. Deres bredde og områder er vist her:
Navnbredde i bitinterval
double 64 1 .7e – 308 to 1.7e + 308
float 32 3 .4e – 038 to 3.4e + 038
Hver af disse floating-point-typer undersøges derefter.
float
Type float angiver en enkeltpræcisionsværdi, der bruger 32 bit lager. Enkel præcision er hurtigere på nogle processorer og tager halvt så meget plads som dobbelt præcision, men bliver upræcis, når værdierne enten er meget store eller meget små. Variabler af typen float er nyttige, når du har brug for en brøkdel, men kræver ikke en stor grad af præcision. For eksempel kan float være nyttigt, når du repræsenterer dollars og cent.
Her er nogle eksempler på floatvariabler erklæringer:
float hightemp, lowtemp;
dobbelt
Dobbelt præcision, som betegnet med det dobbelte nøgleord, bruger 64 bits til at gemme en værdi. Dobbelt præcision er faktisk hurtigere end en enkelt præcision på nogle moderne processorer, der er optimeret til højhastigheds matematisk beregninger. Alle transcendentale matematiske funktioner, såsom sin (), cos () og sqrt (), returnerer dobbeltværdier. Når du har brug for at bevare nøjagtighed over mange iterative beregninger eller manipulerer store værdier, er dobbelt det bedste valg .
Her er et kort program, der bruger dobbeltvariabler til at beregne området for en cirkel:
// Beregn th område af en cirkel.
klasse Område {
offentlig statisk ugyldig hoved (String args []) {
dobbelt pi, r, a;
r = 10,8; // cirkelradius
pi = 3.1416; // pi, ca.
a = pi * r * r; // beregningsareal
System.out.println (“Cirkelareal er” + a);
}
}
Svar
Som sædvanligt afhænger det . De nøjagtige størrelser på shorts og længder overlades til compilerimplementøren, som vælger repræsentationer, der bedst passer til målarkitekturen. Det er muligt (men usandsynligt), at sizeof(short) == sizeof(int) == sizeof(long)
, hvilket betyder at de alle er ens. Den eneste garanti, du har, er, at størrelsen på en short er mindre end eller lig med størrelsen af en lang. For nøjagtige størrelser skal du bruge
header; eller for at abstrahere de grimme detaljer, skal du bruge std::numeric\_limits
skabelonen fra
.
Lignende begrundelse gælder for float og dobbelt, men her er det mere sandsynligt, at float
repræsenterer et enkeltpræcisions flydepunktsnummer (4 byte) og double
et dobbeltpræcisions flydende nummer (8 byte).Der er skrevet for meget software, der antager IEEE 754 , så kompilatorforfattere er mindre tilbøjelige til at afvige fra reglerne.