Hvad er forskellen mellem korte int- og lange int-datatyper og float dobbelt datatype?


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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *