Вещественные типы
Ниже приводится таблица вещественных типов, содержащая их размер, количество значащих цифр и диапазон допустимых значений:
Тип | Размер, байт | Количество значащих цифр |
Диапазон значений |
real | 8 | 15-16 | -1.8∙10 308 .. 1.8∙10 308 |
double | 8 | 15-16 | -1.8∙10 308 .. 1.8∙10 308 |
single | 4 | 7-8 | -3.4∙10 38 .. 3.4∙10 38 |
decimal | 16 | 28-29 | -79228162514264337593543950335 .. 79228162514264337593543950335 |
Типы real и double являются синонимами. Самое маленькое положительное число типа real приблизительно равно 5.0∙10 -324 , для типа single оно составляет приблизительно 1.4∙10 -45 .
Максимальные значения для каждого вещественного типа определены как внешние стандартные константы : MaxReal , MaxDouble и MaxSingle .
Для каждого вещественного типа R кроме decimal определены также следующие константы как статические члены класса:
R.MinValue — константа, представляющая минимальное значение типа R ;
R.MaxValue — константа, представляющая максимальное значение типа R ;
R.Epsilon — константа, представляющая самое маленькое положительное число типа R ;
R.NaN — константа, представляющая не число (возникает, например, при делении 0/0);
R.NegativeInfinity — константа, представляющая отрицательную бесконечность (возникает, например, при делении -2/0);
R.PositiveInfinity — константа, представляющая положительную бесконечность (возникает, например, при делении 2/0).
Для каждого вещественного типа R кроме decimal определены следующие статические функции:
R.IsNaN(r) — возвращает True , если в r хранится значение R.NaN , и False в противном случае;
R.IsInfinity(r) — возвращает True , если в r хранится значение R.PositiveInfinity или R.NegativeInfinity , и False в противном случае;
R.IsPositiveInfinity(r) — возвращает True , если в r хранится значение R.PositiveInfinity , и False в противном случае;
R.IsNegativeInfinity(r) — возвращает True , если в r хранится значение R.NegativeInfinity , и False в противном случае;
Для каждого вещественного типа R определены следующие статические функции:
R.Parse(s) — функция, конвертирующая строковое представление числа в значение типа R . Если преобразование невозможно, то генерируется исключение;
R.TryParse(s,res) функция, конвертирующая строковое представление числа в значение типа R и записывающая его в переменную res . Если преобразование возможно, то возвращается значение True , в противном случае — False .
Кроме того, определена экземплярная функция ToString , возвращающая строковое представление переменной типа R .
Вещественные константы можно записывать как в форме с плавающей точкой, так и в экспоненциальной форме:
Вещественные типы
В языке Паскаль существует несколько типов для представления действительных (вещественных) чисел. Чаще всего используется тип Real.
Вещественные типы в Pascal
Тип | Диапазон | Число цифр | Память, байт |
---|---|---|---|
Real | зависит от платформы | . | 4 или 8 |
Single | 1.5e-45 … 3.4e38 | 7-8 | 4 |
Double | 5.0e-324 . 1.7e308 | 15-16 | 8 |
Extended | 1.9E-4932 .. 1.1E4932 | 19-20 | 10 |
Comp | -2E64+1 .. 2E63-1 | 19-20 | 8 |
Currency | -922337203685477.5808 .. 922337203685477.5807 | 19-20 | 8 |
Число цифр определяет точность, с которой будет храниться вещественное число. Например, для Real разрядность мантиссы может составлять не более восьми десятичных знаков. Тип Comp содержит только целые значения, которые представляются в вычислениях как вещественные.
Над действительными числами выполнимы операции сложения (+), вычитания (-), умножения (*) и деления (/). Результатом этих операций является также действительное число. Даже если хотя бы один из операндов вещественный, то результат этих операций также будет вещественным.
Операция деления (/) дает вещественный результат и в случае двух целых операндов. Например, 6 / 2 = 3.0.
Для действительных чисел допустимы такие же операции отношения (сравнения), что и для целых чисел.
Стандартная функция abs(x) – модуль x – от целого аргумента дает целый результат, а от вещественного – вещественный, как и sqr(x) – квадрат x .
Функции, которые дают вещественный результат, как для вещественного, так и для целого аргумента:
- sin(x) – синус x ( x в радианах),
- cos(x) – косинус x ( x в радианах),
- ln(x) – натуральный логарифм x ,
- exp(x) – экспонента x ,
- sqrt(x) – корень квадратный из x ,
- arctan(x) – арктангенс x
Функция int возвращает в виде действительного значения целую часть аргумента, frac возвращает дробную часть аргумента.
var x: real; begin x := 4.7389; writeln(x:10:4); writeln(int(x):10:4); writeln(frac(x):10:4); end.
4.7389 4.0000 0.7389
Функции trunc и round возвращают результат целого типа. Первая отсекает дробную часть от аргумента, а вторая выполняет округление до ближайшего целого.
Функция random без аргументов возвращает равномерно распределенное случайное число от 0 до 1.
Не имеющая аргументов функция pi возвращает число Пифагора.
Нельзя использовать переменные и константы вещественного типа:
- в функциях pred, succ, ord;
- в качестве индексов массивов;
- в операторах передачи управления в качестве меток.
Тип данных Real.
Тип REAL (вещественный). Число типа REAL занимает три слова (шесть байтов). При работе с вещественными числами нужно помнить, что на любом отрезке вещественной оси существует бесчисленное множество чисел. Поскольку для кодирования вещественного числа отведено всего шесть байтов памяти, то расчеты выполняются всегда с конечной точностью, которая зависит от формата числа.
Вещественное число записывается и хранится в памяти компьютера в виде X=m*B n , где m – мантисса, В – основание представления числа с плавающей точкой, n – порядок (целое число). Имеют место ограничения –M1
Так, для типа REAL основание В равно 10. Размер мантиссы 11—12 десятичных чисел. Диапазон десятичного порядка равен [-39, +38]. Таким образом, на отрезке оси вещественных чисел в заданном диапазоне можно закодировать только конечное число значений, а поскольку на оси таких чисел бессчетное множество, то выбирается интервал, «дискрет», на который этот диапазон (отрезок) делится. Число таких интервалов конечно. Каждый дискрет ставится в соответствие значению вещественного числа. Конечное множество определенных таким образом представителей вещественных чисел называется континуумом. Результаты вычислений округляются до чисел этого множества, поэтому необходимо говорить о точности вычислений. Округление результата происходит до ближайшего вещественного числа большего данного по модулю. Следует также отметить, что эти интервалы не являются равными. В соответствии с полулогарифмическим способом своего представления интервалы «растягиваются» с увеличением порядка. Наибольшая точность расчетов достигается в центральной части диапазона изменения вещественного числа X (например, в районе 1.0Е+00 погрешность вычислений 0,00000000001), и наименьшая — на его краях (например, в окрестностях числа 1.0Е+38 погрешность вычисления равна 1000000000000000000000000000).
Существует две формы отображения вещественных чисел (таблица 4): полулогарифмическая (с плавающей точкой) и естественная (с фиксированной точкой).
Над вещественными числами определены операции сложения (+), вычитания (-), умножения (*) и деления (/). Операция возведения в степень не предусмотрена.
Использование типа REAL у начинающего программиста часто вызывает ряд ошибок, приводящих к искажению результата по следующим причинам:
- ошибки ввода — недостаточная точность исходных данных при сборе, подготовке и их вводе в ЭВМ;
- ошибки представления обуславливаются ограниченной точностью внутреннего представления данных в конкретной ЭВМ, используемой для расчетов;
- ошибки вычислений возникают за счет несовершенства математических методов, выбранных для решения задачи. Необходимо оценивать погрешность и держать ее в заданных пределах.
Паскаль — Урок 24: Тип real и арифметические действия в Pascal
В компьютерном программировании типы данных очень важны для точности и эффективности компьютерных программ. Язык программирования Pascal — это строго типизированный язык, который имеет несколько различных типов данных, включая «настоящий» тип данных. Тип данных real используется для хранения чисел с десятичной точкой или числами с плавающей запятой. Тип данных real чрезвычайно полезен при работе с числами, требующими большей точности, чем это возможно с целыми числами. Вещественный тип данных в Паскале — это тип данных с плавающей запятой, для которого обычно требуется больше памяти, чем для других типов данных. Тип данных real позволяет хранить большие действительные числа, такие как экспоненциальное представление, десятичные дроби и любые действительные числа с представлением с плавающей запятой. Используя реальный тип данных, программисты могут работать с числами более эффективно и с большей точностью. Тип данных real часто используется в научных и инженерных приложениях, требующих высокоточных вычислений, которые невозможно точно выполнить с помощью целочисленных типов данных. Например, если мы хотим рассчитать скорость автомобиля, которые проезжает 115 км за 2 часа. В данном случае мы разделим 115 на 2 и получим скорость 57,5 км/ч. 57,5 — это нецелое число и мы должны записать 5 десятых в переменную, а это невозможно осуществить с помощью типа integer. Вещественные числа в Паскале могут быть определены с использованием различных форматов, записи с десятичной точкой и экспоненциальной записи. Обозначение десятичной точки такое же, как мы записываем десятичные числа в математике, просто с точкой вместо запятой. Научная нотация — это способ простого представления больших или малых чисел с помощью показателей степени. Например, если мы хотим представить число 42,65 ? 10 в степени 6, мы можем записать его как 42,65E6. Подводя итог, вещественный тип данных в Паскале позволяет программистам работать с числами высокой точности, которые не могут быть представлены с помощью целочисленных типов данных. Он используется в научных и инженерных приложениях, где требуется высокая точность. Вещественные числа могут быть определены с использованием различных форматов, что обеспечивает гибкость для программистов. Пример программы, которая использует тип данных ‘real’ в Pascal и выполняет некоторые базовые математические операции:
```
program RealDataType;
var
num1, num2, result: real;
begin
writeln('Введите первое число: ');
readln(num1);
writeln('Введите второе число: ');
readln(num2);
result := num1 + num2;
writeln('Сложение = ', result:0:2);
result := num1 - num2;
writeln('Разность = ', result:0:2);
result := num1 * num2;
writeln('Умножение = ', result:0:2);
result := num1 / num2;
writeln('Деление = ', result:0:2);
readln;
end.
```
Эта программа предлагает пользователю ввести два действительных числа, а затем выполняет над ними операции сложения, вычитания, умножения и деления. Обозначение ‘:0:2’ используется для форматирования выходных данных и отображения двух знаков после запятой.
Дата: 2023-03-06 08:19:16 Просмотров: 1601
Теги: паскаль pascal real