Jaka jest różnica między typami danych short int i long int a typem danych float ?


Najlepsza odpowiedź

Różnica czarno-biała Krótka i długa int

Cóż, różnica jest bardzo mała, ale w niektórych przypadkach może być bardzo ważna. Podczas programowania drugim najważniejszym celem (po wykonaniu programu zgodnie z jego przeznaczeniem) jest oszczędzanie pamięci, aby program działał jak najszybciej. W tym miejscu pojawia się słowo kluczowe „long”. Long jest liczbą całkowitą, ale liczba całkowita nie jest dokładnie długim zrozumieniem? Istnieje również słowo „short”. Obecnie zwykle są one oznaczone jako int, ale nie jest to wymagane. różnica między nimi to ich rozmiar. W zależności od komputera, ale w większości przypadków „krótki” to dwa bajty, „długi” to cztery bajty, a „int” może mieć dwa lub cztery bajty. W programach ważne jest, aby to zadeklarować krótka lub długa, jeśli dokładnie wiesz, jak duża będzie ta liczba i jak często będzie modyfikowana, aby można było zaoszczędzić jak najwięcej pamięci. Teraz, jeśli chodzi o zakres zależny od rozmiaru int, czy to ma dwa lub cztery bajty. Oto tabela z odniesieniami do rozmiarów i wartości.

typ zakres rozmiarów

short int 2 bajty -32 768 do 32767

long int 4 bajty -2 147 483 648 do 2 147 483 647

int (16 bitów) 2 bajty -32 768 do 32767

int (32 bity) 4 bajty -2147 , Od 483 648 do 2 147 483 647

Różnica B / w zmiennoprzecinkowa i podwójna

Liczby zmiennoprzecinkowe, zwane także liczbami rzeczywistymi liczby są używane podczas obliczania wyrażeń, które wymagają ułamkowej precyzji. Na przykład obliczenia, takie jak pierwiastek kwadratowy lub transcendentalne, takie jak sinus i cosinus, dają w wyniku wartość, której precyzja wymaga typu zmiennoprzecinkowego. Java implementuje standardowy (IEEE – 754) zbiór typów i operatorów zmiennoprzecinkowych. Istnieją dwa rodzaje typów zmiennoprzecinkowych, zmiennoprzecinkowe i podwójne, które reprezentują odpowiednio liczby o pojedynczej i podwójnej precyzji. Ich szerokość i zakresy są pokazane tutaj:

Szerokość nazwy w zakresie bitów

double 64 1 .7e – 308 do 1.7e + 308

float 32 3 .4e – 038 do 3.4e + 038

Każdy z tych Następnie sprawdzane są typy zmiennoprzecinkowe.

float

Typ float określa wartość o pojedynczej precyzji, która wykorzystuje 32 bity pamięci. Pojedyncza precyzja jest szybsza na niektórych procesorach i zajmuje o połowę mniej miejsca niż podwójna precyzja, ale stanie się nieprecyzyjna, gdy wartości będą bardzo duże lub bardzo małe. Zmienne typu float są przydatne, gdy potrzebujesz składnika ułamkowego, ale nie wymagają dużego stopnia dokładności. Na przykład zmiennoprzecinkowe mogą być przydatne do reprezentowania dolarów i centów.

Oto kilka przykładowych zmiennych typu float deklaracje:

float hightemp, lowtemp;

double

Podwójna precyzja, oznaczona słowem kluczowym double, wykorzystuje 64 bity do przechowywania wartości. Podwójna precyzja jest w rzeczywistości szybsza niż pojedyncza precyzja w niektórych nowoczesnych procesorach, które zostały zoptymalizowane pod kątem szybkich operacji matematycznych obliczenia. Wszystkie transcendentalne funkcje matematyczne, takie jak sin (), cos () i sqrt (), zwracają wartości podwójne. Jeśli chcesz zachować dokładność wielu obliczeń iteracyjnych lub manipulujesz liczbami o dużej wartości, najlepszym wyborem jest podwójne .

Oto krótki program, który używa podwójnych zmiennych do obliczenia pola koła:

// Oblicz th e obszar koła.

class Area {

public static void main (String args []) {

double pi, r, a;

r = 10,8; // promień okręgu

pi = 3.1416; // pi, około

a = pi * r * r; // oblicz pole

System.out.println („Obszar koła to” + a);

}

}

Odpowiedz

Jak zwykle, to zależy . Dokładne rozmiary szortów i długości są pozostawione realizatorowi kompilatora, który wybierze reprezentacje najlepiej pasujące do architektury docelowej. Jest możliwe (ale mało prawdopodobne), że sizeof(short) == sizeof(int) == sizeof(long), co oznacza, że ​​wszystkie są takie same. Jedyną gwarancją, jaką masz, jest to, że rozmiar spodenek jest mniejszy lub równy rozmiarowi long. Aby uzyskać dokładne rozmiary, użyj nagłówka ; lub aby wyodrębnić brzydkie szczegóły, użyj szablonu std::numeric\_limits z .

Podobna argumentacja dotyczy float i double, ale tutaj jest bardziej prawdopodobne, że float będzie reprezentować liczbę zmiennoprzecinkową o pojedynczej precyzji (4 bajty), a double będzie liczba zmiennoprzecinkowa podwójnej precyzji (8 bajtów).Napisano zbyt dużo oprogramowania, które zakłada, że IEEE 754, jest mniej prawdopodobne, że twórcy kompilatorów odejdą od reguł.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *