1. Wpiszdouble
Aby pracować z liczbami rzeczywistymi (ułamkowymi), Java używa rozszerzenia double
. 8 bytes
Zajmuje (dwa razy więcej pamięci niż typ int
) i może przechowywać wartości do . Dla porównania, typ może przechowywać wartość do .-1.7*10308
+1.7*10308
int
-2*109
+2*109
W liczbach rzeczywistych część ułamkowa jest zapisywana po kropce. Na przykład 123,456 lub 2,5 lub 100,00 lub 0,01. Takie liczby nazywane są również liczbami zmiennoprzecinkowymi - liczba zmiennoprzecinkowa - komputerowa nazwa liczb rzeczywistych.
Nawiasem mówiąc, oprócz typu double
istnieje również typ rzeczywisty float
(rozmiar tylko 4 bajty). Jego nazwa pochodzi właśnie od liczby zmiennoprzecinkowej . Nazwa double
pochodzi od podwójnego pływaka . Typ jest dwa razy double
większy niż float
: 8 bytes
vs. 4
Nazywana jest również liczbą rzeczywistą podwójnej precyzji .
2. Utwórz zmienną typudouble
Typ podwójny służy do przechowywania liczb rzeczywistych. Aby utworzyć w kodzie zmienną, która będzie mogła przechowywać liczby rzeczywiste, należy użyć polecenia:
double name;
Gdzie nazwa to nazwa zmiennej. Przykłady:
Zespół | Opis |
---|---|
|
Tworzona jest zmienna rzeczywistaprice |
|
Tworzona jest zmienna rzeczywistaweight |
|
Tworzona jest zmienna rzeczywistalightSpeed |
Podobnie jak w przypadku typu int
, możesz użyć skrótu, aby utworzyć wiele zmiennych typu double
:
double name 1, name 2, name 3;
A nawet od razu przypisz im wartości:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Przykłady:
Zespół | Notatka |
---|---|
|
Wartość jest przechowywana w zmiennej5.0 |
|
Wartość jest przechowywana w zmiennej2.0 |
|
3. Przypisanie liczb całkowitych i rzeczywistych
Byłoby źle, gdyby liczby całkowite można było przypisywać tylko do zmiennych typu int
, a liczby rzeczywiste tylko do zmiennych typu double
. Chciałbym móc przekonwertować jedną liczbę na drugą. A w Javie jest taka możliwość.
Po pierwsze, zmiennym typu double
można przypisywać zarówno liczby rzeczywiste, jak i całkowite. Kiedy przypisuje się liczby całkowite, są one po prostu konwertowane na liczby rzeczywiste. Chociaż czasami możliwa jest niewielka utrata dokładności.
Zespół | Notatka |
---|---|
|
Wartość jest przechowywana w zmiennej5.0 |
|
Wartość jest przechowywana w zmiennej2.0 |
|
x Wartość jest przechowywana w zmiennej1000000.0 |
Po drugie, jeśli w jakimś wyrażeniu występuje liczba całkowita i liczba rzeczywista, liczba całkowita jest najpierw konwertowana na liczbę rzeczywistą, a dopiero potem wchodzi w interakcję z inną liczbą rzeczywistą.
Zespół | Notatka |
---|---|
|
x Wartość jest przechowywana w zmiennej5000.0 |
|
Numer zostanie wyświetlony na ekranie.10 |
|
Numer zostanie wyświetlony na ekranie.10.0 |
I wreszcie, możliwe jest przypisanie int
liczb rzeczywistych do zmiennych typu. Część ułamkowa liczby jest odrzucana - liczba jest zaokrąglana w dół do liczby całkowitej.
Ponadto kompilator wymaga, aby programista wyraźnie udokumentował ten fakt (aby inni programiści zrozumieli, że część ułamkowa jest tutaj odrzucana). Ogólna postać tego wyrażenia w kodzie jest następująca:
integer_variable = (int)(real_number);
Przykłady:
Zespół | Notatka |
---|---|
|
x Wartość jest przechowywana w zmiennej5 |
|
x Wartość jest przechowywana w zmiennej5 |
|
x Wartość jest przechowywana w zmiennej11 |
4. Dzielenie liczb całkowitych i rzeczywistych w Javie
Podczas dzielenia liczby całkowitej przez liczbę całkowitą reszta jest zawsze odrzucana. Jak więc, powiedzmy, podzielić 5
przez, 2
aby otrzymać 2.5
?
Na pierwszy rzut oka prawidłowa odpowiedź wydaje się brzmieć:
double d = 5 / 2;
Jednak nie wszystko takie proste. Faktem jest, że maszyna Java najpierw obliczy wartość wyrażenia 5 / 2
, a dopiero potem przypisze wynik do zmiennej d
. I podział 5 / 2
będzie zupełny. Te. d
będzie zawierał 2
lub, mówiąc ściślej,2.0
Prawidłowa opcja jest następująca: przynajmniej jedna z liczb biorących udział w dzieleniu musi być zapisana jako liczba rzeczywista (tj. z kropką):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
W każdym z tych wyrażeń d
będzie zawierać wartość2.5
Ale co ze zmiennymi? A co jeśli mamy taki kod:
int a = 5;
int b = 2;
double d = a / b;
Istnieje tutaj trudne (i oczywiste) rozwiązanie - zmusić maszynę Java do konwersji zmiennych na rzeczywiste poprzez pomnożenie ich przez rzeczywistą jednostkę - 1.0
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Zauważ, że mnożenie i dzielenie mają równy priorytet i są wykonywane od lewej do prawej, więc nie ma znaczenia, gdzie mnożymy przez rzeczywistą jednostkę.
Przykłady:
Zespół | Kolejność wykonania | Wynik |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION