3.2.2. Реални типове

Ще разгледаме реалния тип double.
Типът е стандартен, вграден във всички реализации на езика.

Множество от стойности

Множеството от стойности на типа double се състои от реалните числа от -1.74*10308 до 1.7*10308 . Записват се във два формата – като числа с фиксирана и като числа с плаваща запетая (експоненциален формат).

<реално_число> ::= <цяло_число>.<цяло_число_без_ знак>|
<цяло_число>Е<порядък> |
<цяло_число>.<цяло_число_без_ знак>E<порядък> |
<порядък> ::= <цяло_число>
При експоненциалния формат може да се използва и малката латинска буква e.
Примери: Следните числа
123.3454 -10343.034 123Е13 -1.23е-4
са коректно записани реални числа.
Смисълът на експоненциалния формат е реално число, получено след умножаване на числото пред E (e) с 10 на степен числото след E (e).
Примери: 12.5Е4 е реалното число 125000.0, а –1234.025е-3 е реалното число –1.234025.
Елементите от множеството от стойности на типа double се наричат реални константи или по-точно константи от реалния тип double.
Променлива величина, множеството от допустимите стойности, на която съвпада с множеството от стойности на типа double, се нарича реална променлива или променлива от тип double.
Дефинира се по обичайния начин. Дефиницията свързва реалните променливи с множеството от стойности на типа double или с конкретна стойност от това множество, като отделя по 8 байта оперативна памет за всяка от тях. Ако променливата не е била инициализирана, съдържанието на свързната с нея памет е неопределено, а в противен случай – съдържа указаната при инициализацията стойност.
Примери:
double i;
double j = 5699.876;
След тази дефиниция, имаме:
ОП
i j
- 5699.876
8 байта 8 байта

Операции и вградени функции

Аритметични операции

Унарни операции

+, - Префиксни са. Потвърждават или променят знака на
аргумента си.
Примери: Нека
double i = 1.2, j = -7.5;
Следните конструкции съдържат унарна операция + или -:
-i +j -j +i -56.7

Бинарни операции

Имат два аргумента. Следните аритметичните оператори са инфиксни:

+ - събиране
- - изваждане
* - умножение
/ - деление (поне единият аргумент е реален)

Примери:
15.3 – 12.2 = 3.1 13.0 / 5 = 2.6
15 + 12.35 = 27.35 13 / 5.0 = 2.6
-1.5 * 12.3 = -18.45

Логически операции

Логическите операции конюнкция, дизюнкция и отрицание могат да се прилагат над реални константи. Дефинират се по същия начин, като реалните числа, които са различни от 0.0 се интерпретират като true, а 0.0 – като false.
Примери:
123.6 and 0.0 е false
0.0 or 15.67 е true
not 67.7 е false

Операции за сравнение

Над реални данни могат да се извършват следните инфиксни операции за сравнение:
== - за равно != - за различно
> - за по-голямо >= - за по-голямо или равно
< - за по-малко <= - за по-малко или равно.
Наредбата на реалните числа е като в математиката.
Примери:
123.56 < 234.09 е true
-123456.9888 > 324.0098 е false
23451.6 >= 0 е true

Допълнение: Сравнението за равно на две реални числа x и y се реализира обикновено чрез релацията: |x – y| < e, където e = 10-14 за тип double. По-добър начин е да се използва релацията:


Вградени функции

При цял или реален аргумент, следните функции връщат реален резултат от тип double:
Sin(x) - синус, sin x, x е в радиани
cos(x) - косинус, cos x, x е в радиани
tan(x) - тангенс, tg x, x е в радиани
аSin(x) - аркуссинус, arcsin x