1. doubleвид
Java предоставя doubleтипа за работа с реални (дробни) числа. Той заема 8 bytesпамет (два пъти повече от intтипа) и може да съхранява стойности в диапазона от до . За сравнение: типът може да съхранява стойност в диапазона от до .-1.7*10308+1.7*10308int-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;
doubleтип
Където име е името на променливата. Примери:
| Изявление | Описание |
|---|---|
|
priceСъздава се реална променлива |
|
weightСъздава се реална променлива |
|
lightSpeedСъздава се реална променлива |
Както при intтипа, можете да използвате стенограма за създаване на множество doubleпроменливи едновременно:
double name 1, name 2, name 3;
doubleпроменливи
И дори веднага да им присвоите стойности:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
doubleпроменливи
Примери:
| Изявление | Забележка |
|---|---|
|
Променливите магазини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);
intпроменлива
Примери:
| Изявление | Забележка |
|---|---|
|
Променливите xмагазини5 |
|
Променливите xмагазини5 |
|
Променливите xмагазини11 |
4. Деление на цели и реални числа в Java
При деление на цяло число на цяло число остатъкът винаги се изхвърля. Как тогава можем да разделим 5на, 2за да получим 2.5?
Първоначално изглежда, че правилният вариант е:
double d = 5 / 2;
Но не е толкова просто. Проблемът тук е, че Java машината първо изчислява стойността на 5 / 2и едва след това присвоява резултата на dпроменливата. И 5 / 2операцията е целочислено деление. Това означава, d че ще съдържа 2or, по-точно,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