Число с плавающей запятойЧисло с плавающей запятой (или число с плавающей точкой) — экспоненциальная форма представления вещественных (действительных) чисел, в которой число хранится в виде мантиссы и порядка (показателя степени). При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Используемое наиболее часто представление утверждено в стандарте IEEE 754. Реализация математических операций с числами с плавающей запятой в вычислительных системах может быть как аппаратная, так и программная. «Плавающая запятая» и «плавающая точка»Так как в некоторых, преимущественно англоязычных и англофицированных странах при записи чисел целая часть отделяется от дробной точкой, то в терминологии этих стран фигурирует название «плавающая точка» (англ. floating point). Так как в России целая часть числа от дробной традиционно отделяется запятой, то для обозначения того же понятия исторически используется термин «плавающая запятая», однако в настоящее время в русскоязычной литературе и технической документации можно встретить оба варианта. Происхождение названияНазвание «плавающая запятая» происходит от того, что запятая в позиционном представлении числа (десятичная запятая, или, для компьютеров, двоичная запятая) может быть помещена где угодно относительно цифр в строке. Это положение указывается отдельно во внутреннем представлении. Такое представление может рассматриваться как компьютерная реализация экспоненциальной записи чисел. Преимущество использования представления чисел в формате с плавающей запятой над представлением в формате с фиксированной запятой (и целыми числами) состоит в том, что можно использовать существенно больший диапазон значений при неизменной относительной точности. Например, в форме с фиксированной запятой число, занимающее 6 разрядов в целой части и 2 разряда после запятой, может быть представлено в виде 123 456,78. В свою очередь, в формате с плавающей запятой в тех же 8 разрядах можно записать числа 1,2345678; 1 234 567,8; 0,000012345678; 12 345 678 000 000 000 и так далее, но для этого необходимо иметь дополнительное двухразрядное поле для записи показателей степени основания 10 от 0 до 16, при этом общее число разрядов составит 8+2=10. Скорость выполнения компьютером операций с числами, представленными в форме с плавающей запятой, измеряется во FLOPS (от англ. floating-point operations per second — «[количество] операций с плавающей запятой в секунду») и является одной из основных единиц измерения быстродействия вычислительных систем. Структура числаЧисло с плавающей запятой состоит из следующих частей:
Нормальная и нормализованная формыНормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале , то есть . Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать как 0,000001⋅102, 0,00001⋅101, 0,0001⋅100, 0,001⋅10−1, 0,01⋅10−2 и так далее), поэтому распространена (особенно в информатике) также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (исключительно), то есть (аналогично, мантисса двоичного числа принимает значения от 1 до 2). В такой форме любое число (кроме ) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0. Старший разряд (целая часть числа) мантиссы двоичного числа (кроме 0) в нормализованном виде равен 1 (так называемая неявная единица), поэтому при записи мантиссы числа в ЭВМ старший разряд можно не записывать, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого свойства нет. Способы записиПри ограниченных возможностях оформления (например, отображение числа на семисегментном индикаторе), а также при необходимости обеспечить быстрый и удобный ввод чисел, вместо записи вида m·be (m — мантисса; b — основание, чаще всего 10; e — экспонента), записывают лишь мантиссу и показатель степени, разделяя их буквой «E» (от англ. exponent). Основание при этом неявно полагают равным 10. Например, число 1,528535047⋅10−25 в этом случае записывается как 1.528535047E-25. Краткий обзорСуществует несколько способов того, как строки из цифр могут представлять числа:
Запись числа в форме с плавающей запятой позволяет производить вычисления над широким диапазоном величин, сочетая фиксированное количество разрядов и точность. Например, в десятичной системе представления чисел с плавающей запятой (3 разряда) операцию умножения, которую мы бы записали как
в нормальной форме представляется в виде
В формате с фиксированной запятой мы бы получили вынужденное округление
Мы потеряли крайний правый разряд числа, так как данный формат не позволяет запятой «плавать» по записи числа. Диапазон чисел, представимых в формате с плавающей запятойДиапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. На обычной 32-битной вычислительной машине, использующей двойную точность (64 бита), мантисса составляет 1 бит знак + 52 бита, показатель — 1 бит знак + 10 бит. Таким образом получаем диапазон точности примерно от 4,94⋅10−324 до 1,79⋅10308 (от 2−52 × 2−1022 до ~1 × 21024). (или от 3,7⋅10-1126 до 9,99⋅101091). В стандарте IEEE 754 несколько значений данного типа зарезервировано для обеспечения возможности представления специальных значений. К ним относятся значения NaN (Not a Number, «не число») и +/-INF (Infinity, бесконечность), получающихся в результате операций деления на ноль или при превышении числового диапазона. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например, GPU) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти, выделенный под мантиссу и показатель, задаётся программно и ограничивается лишь объёмом доступной памяти ЭВМ (см. Арифметика произвольной точности).
Машинный эпсилонВ отличие от чисел с фиксированной запятой, сетка чисел, которые способна отобразить арифметика с плавающей запятой, неравномерна: она более густая для чисел с малыми порядками и более редкая — для чисел с большими порядками. Но относительная погрешность записи чисел одинакова и для малых чисел, и для больших. Машинным эпсилоном называется наименьшее положительное число ε такое, что (знаком обозначено машинное сложение). Грубо говоря, числа a и b, соотносящиеся так, что , машина не различает. Для одинарной точности , то есть приблизительно 7 значащих цифр. Для двойной точности: , 15 значащих цифр[1]. См. также
Примечания
Литература
Ссылки
|