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).
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.