Значение переменных вещественного типа всегда приблизительные, поэтому их нельзя проверять на равенство!
|
Тип |
|
Диапазон значений |
|
Точность |
|
Объём памяти |
||
|
Real48 |
|
|
-2.9x10-39 ..1.7x1038 |
|
|
11-12 цифр |
|
6 байт |
|
Single |
|
|
-1.5x10-45 ..3.4x1038 |
|
|
7-8 цифр |
|
4 байта |
|
Double = Real |
|
|
-5.0x10-324 ..1.7x103U8 |
|
|
15-16 цифр |
|
8 байтов |
Extended |
-3.6x10-4951 "1.1x104y32 |
19-20 цифр |
10 байтов |
||||||
|
Comp |
|
|
-2x1063+1 ..2x1063-1 |
|
|
19-20 цифр |
|
8 байтов |
Currency |
|
-922337203685477.5808 .. |
|
19-20 цифр |
8 байтов |
||||
|
|
922337203685477.5807 |
|
|
|
Тип Real48 оставлен только для совместимости с предыдущими версиями Delphi, поэтому его не следует использовать.
Типы Compи Currencyиспользуются только в денежных операциях.
Обычно для расчётов хватает точности типа Single, но вычисления производятся быстрее с типом Real(он же Double).
Для записи вещественных чисел используют 2 способа. Первый - как в школе, но вместо десятичной запятой ставится точка:
1.5
-3.14
Для очень больших и очень маленьких чисел больше подходит второй способ. Сначала записывается однозначное число с десятичной точкой, затем буква E(или е) и целое число, которое равно степени десятки. Например,
1.05e2 это 1.05 x102или 1.05 x100 = 105
-3.14e-5 это -3.14 x10-5 или -3.14 x0,00001 = -0.0000314
Объявление переменных вещественного типа:
Vara,b: Single;
C: Real;
Вещественные числа часто используются для «технических» расчётов, а при необходимости их можно округлить до целых чисел (тип результата - int64) с помощью функций truncи round.
Целым переменным нельзя присваивать действительные значения!
Функция truncпросто отсекает дробную часть числа:
trunc(2.1728) = 2
trunc(-2.1728)) = -2
Функция roundокругляет действительное число до ближайшего целого:
round(2.1728) = 2
round(2.7) = 3 round(2) = 2 round(-2.1728)) = -2
Чтобы было легче понять, как действует функция round, выразим её через trunc:
round(x) = trunc(x + 0.5), если x>=0 round(x) = trunc(x - 0.5), если x < 0