1. Wpiszdouble

Aby pracować z liczbami rzeczywistymi (ułamkowymi), Java używa rozszerzenia double. 8 bytesZajmuje (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*10308int-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 doubleistnieje również typ rzeczywisty float(rozmiar tylko 4 bajty). Jego nazwa pochodzi właśnie od liczby zmiennoprzecinkowej . Nazwa doublepochodzi od podwójnego pływaka . Typ jest dwa razy doublewiększy niż float: 8 bytesvs. 4Nazywana 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;
Tworzenie zmiennej typudouble

Gdzie nazwa to nazwa zmiennej. Przykłady:

Zespół Opis
double price;
Tworzona jest zmienna rzeczywistaprice
double weight;
Tworzona jest zmienna rzeczywistaweight
double lightSpeed;
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;
Tworzenie wielu zmiennych typudouble

A nawet od razu przypisz im wartości:

double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Tworzenie i inicjowanie wielu zmiennych typudouble

Przykłady:

Zespół Notatka
double price = 5.0;
Wartość jest przechowywana w zmiennej5.0
double weight = 2;
Wartość jest przechowywana w zmiennej2.0
double x = 1.0, y = 2.0, z = 3.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 doublemoż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
double price = 5.0;
Wartość jest przechowywana w zmiennej5.0
double weight = 2;
Wartość jest przechowywana w zmiennej2.0
int t = 1000;
double x =  t * t;

xWartość 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
int t = 1000;
double x = t * 5.0;

xWartość jest przechowywana w zmiennej5000.0
System.out.println(5 * 2);
Numer zostanie wyświetlony na ekranie.10
System.out.println(5 * 2.0);
Numer zostanie wyświetlony na ekranie.10.0

I wreszcie, możliwe jest przypisanie intliczb 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);
Przypisanie do zmiennej typu intliczb rzeczywistych

Przykłady:

Zespół Notatka
int x = (int)(5.5);
xWartość jest przechowywana w zmiennej5
double a = 5.999;
int x = (int)(a);
xWartość jest przechowywana w zmiennej5
double a = 5.999;
int b = 2;
int x = (int)(a * b);
xWartość 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ć 5przez, 2aby 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 / 2będzie zupełny. Te. d będzie zawierał 2lub, 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
int a = 5;
int b = 2;
double d = 1.0 * a / b;
(1.0 * a) / b; 2.5
int a = 5;
int b = 2;
double d = a * 1.0 / b;
(a * 1.0) / b; 2.5
int a = 5;
int b = 2;
double d = a / b * 1.0;
(a / b) * 1.0; 2.0