Java Float i podwójne porównanie
Float i podwójne typy to dwa różne formaty reprezentowania liczb rzeczywistych w Javie. Oba są określane jako typy zmiennoprzecinkowego. Realna liczba z matematyki to liczba całkowitą i dziesiętną. Na przykład 23.75 to prawdziwa liczba. Część liczbowa to 23, a część dziesiętna to 75. Jeśli część dziesiętna to „.0 ”, liczba rzeczywista to 23.0, wtedy liczba rzeczywista jest liczbą całkowitą. Liczby całkowite są podgatunkiem liczb rzeczywistych. Szereg rzeczywistych liczb od najmniejszej do największej wartości miałoby w środku liczby całkowite. Na przykład zakres liczb rzeczywistych od -3.5 do +3.5 ma liczby całkowite, -3, -2, -1, 0, +1, +2 i +3, wewnątrz. Nie zapominaj, że dziesiętna część liczby rzeczywistych jest właściwą ułamkiem. Na przykład .75 to 3/4.
Jak widać z powyższego zakresu, który wynosi od -3.5 do +3.5, liczba może być dodatnia lub ujemna. Liczba bez znaku nazywana jest liczbą bezwzględną. Bezwzględna liczba -2.5 to 2.5. Bezwzględna liczba +2.5 to 2.5. Liczba bezwzględna to liczba dodatnia.
Liczba, 23.75 może być reprezentowane przez pływak lub podwójny. Więc jak powstaje różnica? Odpowiedź na to można docenić, próbując odpowiedzieć na pytanie: ile liczb jest między 2 a 3, obejmującymi (w tym 2 i 3)? W rzeczywistości liczba liczb między 2 a 3 jest nieskończona. Tak więc liczby pływakowe lub podwójne są zestawem liczb w zakresie, ponieważ nie można określić nieskończonych liczb. W tym samym zakresie istnieje więcej podwójnych liczb, z krótszymi odstępami między każdą kolejną parą liczb.
Ten artykuł porównuje pływaki i podwójne w Javie, zaczynając od wyobrażonych odpowiednich typów o nazwie Flot i Wątp.
Wyimaginowane odpowiadające typy
Opracujmy nasze własne wyimaginowane typy o nazwie Flot i Wątp.
Flot
Z typem flota miejmy trzy liczby między 2 a 3. Miejmy liczby, 2.25, 2.5 i 2.75. Tak więc jedyne liczby flot między 2 a 3 włączającymi, to 2, 2.25, 2.5, 2.75 i 3. Jak widać z tego zakresu, najmniejsza liczba bezwzględna w całym zestawie Flot to 0.25, co jest również różnicą między dwiema kolejnymi liczbami. (Aby mieć liczby od 3 do 4, po prostu dodaj 0.25).
Wątp
Ze typem wątpliwości, miejmy siedem liczb między 2 a 3. Miejmy liczby, 2.125, 2.25, 2.375, 2.5, 2.625, 2.75, 2.875. Tak więc jedyne wątpliwe liczby między 2 a 3 obejmują 2, 2.125, 2.25, 2.375, 2.5, 2.625, 2.75, 2.875 i 3. Jak widać z tego zakresu, najmniejsza liczba bezwzględna w całym zestawie wątpliwości to 0.125, co jest również różnicą między dwiema kolejnymi liczbami. (Aby mieć liczby od 3 do 4, po prostu dodaj 0.125). Ta liczba jest mniejsza niż 0.25 dla flot.
Margines błędu
Należy zauważyć, że kolejne liczby dla wątpliwości są mniejsze niż kolejne liczby dla Flot.
Nie można ustalić dokładnej liczby liczb w zakresie flot lub wątpliwości, ponieważ wszystkie liczby w zakresie są nieskończone. Tak więc istnieje margines błędu dla dowolnej liczby, w tym liczb całkowitych, takich jak 2 lub 3, dla każdego z tych typów.
W przypadku flot, dla dowolnej liczby, liczba jest dokładna do wewnątrz, + lub - 1/4 (i.mi. 0.25). Tak więc liczba flotów 2.5, faktycznie leży gdzieś między 2.375 i 2.675. Numer 3, w rzeczywistości leży gdzieś między 2.875 i 3.125. Rzeczywista liczba (precyzja) nigdy nie można określić. Nawet liczba całkowita typu flot jest liczbą, która nie jest bardzo pewna.
W przypadku wątpliwości, dla dowolnej liczby, liczba jest dokładna do wewnątrz + lub -1/8 (0.125). Więc wątpliwa liczba 2.5, faktycznie leży gdzieś między 2.4375 i 2.5625. Wątpliwość 3, faktycznie leży gdzieś między 2.9375 i 3.0625. Rzeczywista liczba (precyzja) nigdy nie można określić. Nawet liczba całkowita typu wątpliwości to liczba, która nie jest bardzo pewna. Zwróć uwagę, że wątpliwy numer ma większą precyzję niż numer FLOT.
Typy pływaków i podwójnych w Javie są odpowiednio podobne do tych wyimaginowanych typów flot i wątpliwości. Ich odstępy są odpowiednio mniejsze.
Porównanie pływaka i podwójnego właściwego w Javie
Float jest znany jako pojedynczy typ precyzyjny. Podwójny jest znany jako typ podwójny precyzji. Liczba pływakowa zajmuje 32 bity (cztery bajty). Podwójna liczba zajmuje 64 bity (osiem bajtów). Obie liczby reprezentują liczby rzeczywiste w Javie, przy czym typ podwójny ma mniej przedziałów między kolejnymi liczbami. Oba typy nigdy nie mogą podać dokładnej liczby. Jednak podwójny ma mniejszą tolerancję niż pływak. Oba typy są w rzeczywistości oparte na formatach IEEE 754.
Zakres podwójnego typu od jego ujemnego końca do jego dodatniego końca jest szerszy niż zakres typu pływaka, od jego ujemnego końca do dodatniego końca.
Platforma
Najmniejsza znormalizowana liczba dodatniej typu pływaka wynosi 2-126. Największa dodatnia liczba dla pływaka to (2 - 2-23) × 2127. Zestaw liczb pływakowych można sobie wyobrazić jako dodawanie 2-126 wielokrotnie od ujemnego końca do jego dodatniego końca.
Wartość liczby zmiennoprzecinkowej powinna zakończyć się „F”, jak pokazuje następujący program:
Klasa publiczna THEClassWyjście to:
23.75
Podwójnie
Najmniejsza znormalizowana dodatnia liczba typu podwójnego wynosi 2-1022, mniejsza niż liczba pływaków. Największa dodatnia liczba dla podwójnego jest (2-2-52) × 21023. Zestaw podwójnych liczb można sobie wyobrazić jako dodawanie 2-1022 wielokrotnie z ujemnego końca, do jego dodatniego końca.
Wartość podwójnej liczby nie kończy się na „f”, „d” lub „r”, jak pokazuje następujący program:
Klasa publiczna THEClassWyjście to:
23.75
ale z mniejszym marginesem tolerancji, niż z pływakiem powyżej.
Float i podwójne są typami prymitywnymi. I tak, żadna klasa nie musi być zaimportowana do programu przez programista do użycia.
Nan
Nan oznacza nie-numer. Rozważ następujący program:
Klasa publiczna THEClassProgram kompiluje bez problemu, ale wydaje następujący komunikat o błędzie, gdy uruchom:
Wyjątek w wątku „główna” Java.Lang.Arytmeticexception: / przez zero
na thlass.Główny (thass.Java: 3)
Nieprawidłowa operacja tutaj, zero podzielona na zero. Wynik to nan, chociaż wydano komunikat o błędzie. Ma to zastosowanie zarówno do zmiennoprzecinkowego, jak i podwójnego. Inne nieprawidłowe operacje, powodują NAN.
Wniosek
Float jest znany jako pojedynczy typ precyzyjny. Podwójny jest znany jako typ podwójny precyzji. Liczba pływakowa zajmuje 32 bity (cztery bajty). Podwójna liczba zajmuje 64 bity (osiem bajtów). Oba typy reprezentują liczby rzeczywiste w Javie, przy czym podwójny typ ma mniej przedziałów między kolejnymi liczbami i jest bardziej precyzyjna.
Chrys