При записи дробных чисел обращают внимание на точность их представления, т.е. на количество значащихся цифр.
Существуют два типа представления вещественных чисел:
1. С плавающей запятой, точкой – нормальная запись:
Основан на нормальной (экспоненциальной) записи чисел. Число представляется в виде:
x = ± m∙np, где m – мантисса, р – порядок, n – основание.
Представление числа в формате с плавающей точкой различно.
Пример: 12.3456 = 0,123456*102 = 1234,56*10-2.
Положение точки в мантиссе определяется величиной порядка p с изменением порядка в большую или меньшую сторону точка перемещается вправо или влево, т.е. “плавает” в изображении числа.
Нормализация при вводе числа и в процессе вычислений осуществляется автоматически. При этом мантисса сдвигается влево на необходимое число разрядов. Происходит соответственно увеличение порядка. При сложении нормального числа одного порядка, может возникнуть переполнение разрядной сетки (появляется 1 слева от запятой). Такого рода переполнение исключается сдвигом мантиссы вправо на 1 разряд и увеличение порядка на 1 единицу. Такая коррекция называется нормализация вправо.
Мантисса должна удовлетворять условию: 0.1n ≤ m < 1, т.е. быть меньше 1 и первая значащая цифра не равна нулю. В памяти компьютера мантисса хранится как целое число, содержащее только значащие цифры. Таким образом, представление вещественного числа сводится к представлению пары целых чисел: мантиссы и порядка.
Пример. 4 байтовая ячейка памяти – 24 разряда под мантиссу.
+/- | порядок | Мантисса |
1 бит | 7 бит | 2,3,4 байты |
1-й байт |
В 1-м байте содержится машинный порядок, в старшем бите хранится знак числа. На порядок отводится 7 бит (27 = 128). 128 значений может принимать диапазон значений порядка. Порядок может быть положительным или отрицательным (-64…+63).
В машинном представлении порядок смещен относительно математического и имеет только положительные значения. Смещение формируется так, чтобы минимальному математическому значению порядка соответствовал нуль (0).Связь между машинным и математическим порядком: Мp=p+6410.
Для записи внутреннего представления вещественного числа надо:
1. Перевести модуль данного числа в двоичную систему счисления с 24-мя значащими цифрами.
2. Нормализовать двоичное число.
3. Найти машинный порядок.
4. Учитывая знак числа записать его представление в 4-х байтовом машинном слове.
Пример: 250.187510 – записать внутреннее представление в 4-х байтовой ячейке.
1. Перевод в двоичную систему с 24 значащими цифрами 250,187510= 11111010,0011000000000000002 (количество цифр до запятой = 810 = 10002).
Запишем в форме нормализованного двоичного числа с плавающей точкой 0,1111 1010 0011 0000 0000 0000*1010002.
Здесь мантисса, основание системы счисления (210=102) и порядок (810=10002) записаны в двоичной системе.
Вычислим машинный порядок: М=10002+100 00002= 100 10002
Запишем в 4-х байтовой ячейки с учетом знака:
0000 0000 | ||||
1-й байт | 2-й байт | 3-й байт | 4-й байт |
2. С фиксированной запятой, точкой – естественная запись:
Все разряды ячейки кроме знакового служат для изображения разрядов чисел, каждому разряду ячейки соответствует один и тот же разряд числа, что и фиксирует место запятой перед определенным разрядом. Такая система упрощает выполнение арифметических действий, но сильно ограничивает диапазон чисел, которые могут быть представлены в этом типе. Диапазон – 1< x < 1 для представления чисел не укладывающихся в диапазон вводят масштабные коэффициенты. Целые типы данных представляются в ЭВМ в формате с фиксированной запятой.
При работе с вещественными числами надо помнить:
1. При записи чисел возникают ошибки, которые возрастают при операциях.
2. Не разумно сравнивать 2 вещественных числа на точное равенство.
3. В результате вычитания возможна потеря точности.
4. «+» или «–» малого числа может никак не сказаться на результате.
5. Получение очень больших чисел может вызвать переполнение порядка, а очень малые – исчезновение числа.
Диапазон значений вещественных чисел шире, чем у целых. Наименьшее по абсолютной величине число равно 0, а наибольшее по модулю, это число с самой большой мантиссой и с самыми большим порядком. Множество вещественных чисел в формате с плавающей точкой является ограниченным и дискретным. Количество вещественных чисел, точно представляемых в памяти вычисляется по формуле N = 2t*(Mpmax = Pmin+1)+1, где
T – количество двоичных разрядов мантиссы
Mpmax – максимальное значение математического порядка.
Pmin – минимальное значение математического порядка.
Пример: для 4-х байтовой ячейки
Mpmax = 63, t = 24, Pmin = -64,
N = 2146683548.
Точность числа – количество значащих цифр, которое удается сохранить в ограниченном числе разрядов.
Вещественные типы данных в Pascal:
Размер | Точность | Обозначение | Диапазон |
7,8 | Single | 1.5*10-45…3.4*1048 | |
11,12 | Real | 2.9*10-39…1.7*1038 | |
15,16 | Double | 5.10-331…1.7*10308 | |
19,20 | extended | 1.9*10-4952…1.1*104932 |