logo

Float kontra podwójna Java

W Jawie, Jawie.

funkcje Javy 8

Istnieją dwa typy danych zmiennoprzecinkowych:

  • pływający typ danych
  • podwójny typ danych

Zarówno float, jak i double reprezentują liczby zmiennoprzecinkowe przechowujące wartości dziesiętne.

Typ danych zmiennoprzecinkowych Wartości Rozmiar (bity)* Wymagania dotyczące pamięci (bajty) Domyślna wartość Precyzja Cyfry dziesiętne Zakres Dokładność
platforma IEEE 754 zmiennoprzecinkowy 32 4 0,0 f Pojedynczy 6 cyfr dziesiętnych 3.4e-038 do 3.4e+038 Niski
podwójnie IEEE 754 zmiennoprzecinkowy 64 8 0,0d Podwójnie 15 cyfr dziesiętnych 1.7e-308 do 1.7e+308 Wysoki

*Bity rozmiaru obejmują:

Bity platforma podwójnie
Podpisać 1 1
Wykładnik potęgowy 8 jedenaście
Mantysa 23 52

Pojedyncza precyzja: Składa się ona z jeden bit znaku (S), osiem bity wykładnicze (E) i dwadzieścia trzy bity mantysy (M).

Podwójna precyzja: Składa się ona z jeden bit znaku (S), jedenaście bity wykładnicze (E) i pięćdziesiąt dwa bity mantysy (M).

Float kontra podwójna Java

pływający typ danych

Jest to 32-bitowa liczba zmiennoprzecinkowa o pojedynczej precyzji, zgodna ze standardem IEEE 754 (standard arytmetyki zmiennoprzecinkowej). Oznacza to, że daje precyzję 6-7 cyfr dziesiętnych. Stosuje się go, jeśli chcemy efektywnie wykorzystać pamięć, ponieważ zajmuje mniej pamięci w porównaniu z podwójnym typem danych. Aby zdefiniować wartość zmiennoprzecinkową, musimy użyć przyrostka f lub F. Domyślna wartość to 0,0f. Domyślnie liczby zmiennoprzecinkowe są traktowane w Javie jako podwójne.

lista posortowana Java

Na przykład, jeśli zdefiniujemy liczbę zmiennoprzecinkową jako:

 float height = 167.7 

Powyższa deklaracja zmiennej float powoduje błąd kompilacji. Możemy poprawić błąd, dodając przyrostek f lub F.

 float height = 167.7f or float height = 167.7F 

podwójny typ danych

Typ danych double to 64-bitowa liczba zmiennoprzecinkowa IEEE 754 o podwójnej precyzji. Oznacza to, że daje dokładność 15-16 cyfr dziesiętnych. Zużywa więcej pamięci w porównaniu do typu danych float. Służy do przechowywania wartości dziesiętnych. Jego domyślna wartość to 0,0d. Opcjonalne jest dodanie przyrostka d lub D. Na przykład:

 double price = 987.90D or double price = 987.90d or double price = 987.90 

float Vs double Typ danych

Typ danych double jest dokładniejszy niż typ danych float. W poniższej tabeli podsumowano różnice między typami danych float i double.

Podstawa pływający typ danych podwójny typ danych
Pamięć Zajmuje 4 bajty. Zajmuje 8 bajty.
Dokładność Jego dokładność jest Niski . Jego dokładność jest wysoki .
Precyzja Wynika Pojedyncza precyzja (6-7 cyfr dziesiętnych). Wynika podwójna precyzja (15-16 cyfr dziesiętnych).
Użyte słowo kluczowe The platforma Słowo kluczowe służy do definiowania liczby zmiennoprzecinkowej. The podwójnie Słowo kluczowe służy do definiowania liczby o podwójnej precyzji.
Klasa opakowania Jego klasa opakowania to java.lang.Float. Jego klasa opakowania to java.lang.Double.
Domyślny typ danych Java nie używa jej jako domyślnej liczby zmiennoprzecinkowej. To jest domyślny typ danych dla liczb zmiennoprzecinkowych.
Utrata danych Tam będzie bez utraty danych jeśli zamienimy float na double. Tam będzie utrata danych jeśli zamienimy double na float.
Używa Należy go używać gdzie mniejsza dokładność jest wymagane, a przechowywanie jest ograniczeniem. Używa się go gdzie większa dokładność jest wymagane i wymaga również większej precyzji.
Przyrostek To używa F Lub F jako przyrostek. Jeśli deklarujesz zmienną zmiennoprzecinkową, dodanie przyrostka jest obowiązkowe. To używa D Lub D jako przyrostek. Jeśli deklarujesz zmienną podwójną, dodanie przyrostka jest opcjonalne.
Reprezentacja 28,96f Lub 28,96F 12,5 Lub 12,5D Lub 12,5d

Podobieństwa między typem danych float i double

  • Liczby rzeczywiste mogą być reprezentowane przez oba typy danych.
  • Zarówno typy danych float, jak i double nie są dokładne, dlatego są wartościami przybliżonymi.

Jakiego typu danych zmiennoprzecinkowych w Javie powinniśmy użyć?

double jest bardziej precyzyjne niż float. Jeśli więc wymagany jest bardziej precyzyjny i dokładny wynik, użyj podwójnego. Innym powodem użycia double jest to, że jeśli liczba nie mieści się w zakresie oferowanym przez liczbę zmiennoprzecinkową, użyj double. Powinniśmy używać float, jeśli mamy ograniczenie pamięci, ponieważ zajmuje on połowę miejsca niż double.

mapa drzewa

Zalecamy użycie funkcji double over float, jeśli nie ma ograniczeń pamięci i miejsca oraz gdy wymagana jest większa precyzja. Jeśli problemem jest pamięć, a wynik z dokładnością do 16 cyfr dziesiętnych nie jest wymagany, zaleca się użycie liczby zmiennoprzecinkowej.

różnica między lisem a wilkiem

Następne dwa Programy Java wyraźnie pokazują różnice między typem danych float i double.

FloatDataTypeExample.java

 public class FloatDataTypeExample { public static void main(String args[]) { float x = 1.0f, y = 3.0f; //defining x and y as float float z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } } 

Wyjście:

 x/y = 0.33333334 

DoubleDataTypeExample.java

 public class DoubleDataTypeExample { public static void main(String args[]) { double x = 1.0, y = 3.0; //defining x and y as double double z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } } 

Wyjście:

 x/y = 0.3333333333333333 

Z powyższych dwóch przykładów jasno wynika, że ​​typ danych double wymaga więcej pamięci do przechowywania liczby o podwójnej precyzji, a także daje dokładniejszy wynik do 16 cyfr dziesiętnych. Podczas gdy typ danych float zajmuje mniej miejsca do przechowywania liczb o pojedynczej precyzji i daje wyniki do 6 miejsc po przecinku.