1. double
вид
Java предоставя double
типа за работа с реални (дробни) числа. Той заема 8 bytes
памет (два пъти повече от int
типа) и може да съхранява стойности в диапазона от до . За сравнение: типът може да съхранява стойност в диапазона от до .-1.7*10308
+1.7*10308
int
-2*109
+2*109
При реалните числа дробната част се записва след десетичната запетая. Например 123,456, or 2,5, or 100,00, or 0,01. Когато компютрите работят с такива числа, ние ги наричаме числа с плаваща запетая .
Между другото, освен типа double
, имаме и float
типа (който е с размер само 4 byteа). Името му идва от плаваща запетая . И името double
идва от double float . A double
е два пъти по-голямо от a float
: 8 bytes
спрямо 4
. Нарича се още число с плаваща запетая с двойна точност .
2. Създаване на double
тип
Двойният тип се използва за съхраняване на реални числа. За да създадете променлива в code, който може да съхранява реални числа, трябва да използвате израз като този:
double name;
Където име е името на променливата. Примери:
Изявление | Описание |
---|---|
|
price Създава се реална променлива |
|
weight Създава се реална променлива |
|
lightSpeed Създава се реална променлива |
Както при int
типа, можете да използвате стенограма за създаване на множество double
променливи едновременно:
double name 1, name 2, name 3;
И дори веднага да им присвоите стойности:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Примери:
Изявление | Забележка |
---|---|
|
Променливите магазини5.0 |
|
Променливите магазини2.0 |
|
3. Задаване на цели и реални числа
Би било лошо, ако целите числа могат да се приписват само на int
променливи, а реалните числа - само на double
променливи. Искаме да можем да конвертираме между двата вида числа. И Java предоставя тази възможност.
Първо, Howто реални, така и цели числа могат да бъдат присвоени на double
променливи. Когато се задават цели числа, те просто се преобразуват в реални числа. Разбира се, част от точността може да се загуби в процеса.
Изявление | Забележка |
---|---|
|
Променливите магазини5.0 |
|
Променливите магазини2.0 |
|
Променливите x магазини1000000.0 |
Второ, ако цяло число и реално число са включени в няHowъв израз, тогава цялото число първо се преобразува в реално число и едва след това се извършва операцията с другото реално число.
Изявление | Забележка |
---|---|
|
Променливите x магазини5000.0 |
|
Номерът 10 ще се покаже на екрана |
|
Номерът 10.0 ще се покаже на екрана |
И накрая, също е възможно да се присвоят реални числа на int
променливи. Когато правим това, дробната част от реалното число се изхвърля — числото се закръгля надолу до най-близкото цяло число.
Освен това компилаторът изисква от програмиста изрично да documentира Howво се случва (за да е сигурен, че другите програмисти разбират, че дробната част се изпуска). Като цяло такова преобразуване изглежда така в codeа:
integer_variable = (int)(real_number);
Примери:
Изявление | Забележка |
---|---|
|
Променливите x магазини5 |
|
Променливите x магазини5 |
|
Променливите x магазини11 |
4. Деление на цели и реални числа в Java
При деление на цяло число на цяло число остатъкът винаги се изхвърля. Как тогава можем да разделим 5
на, 2
за да получим 2.5
?
Първоначално изглежда, че правилният вариант е:
double d = 5 / 2;
Но не е толкова просто. Проблемът тук е, че Java машината първо изчислява стойността на 5 / 2
и едва след това присвоява резултата на d
променливата. И 5 / 2
операцията е целочислено деление. Това означава, d
че ще съдържа 2
or, по-точно,2.0
Правилното решение е да запишете поне едно от числата, участващи в делението, като реално число (т.е. с десетична запетая):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
Във всеки от изразите d
ще съдържа2.5
Но Howво ще стане, ако работим с променливи? Ами ако имаме code като този?:
int a = 5;
int b = 2;
double d = a / b;
Тук има хитро (и очевидно) решение — принудете Java машината да конвертира променливи в реални числа, като ги умножи по едно като реално число ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Имайте предвид, че умножението и делението имат еднакъв приоритет и се извършват отляво надясно. Това означава, че има meaning къде умножаваме 1,0.
Примери:
Изявление | Ред за изпълнение | Резултат |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION