Число с плавающей запятой

Число с плавающей запятой

Число с плавающей запятой — форма представления действительных чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Наиболее часто используемое представление утверждено в стандарте IEEE 754. Реализация математических операций с числами с плавающей запятой в вычислительных системах может быть как аппаратная, так и программная.

Содержание

«Плавающая запятая» и «плавающая точка»

Так как в некоторых, преимущественно англоязычных и англофицированных, странах (см. подробный список Decimal separator  (англ.)) при записи чисел целая часть отделяется от дробной точкой, то в терминологии этих стран фигурирует название «плавающая точка» (floating point  (англ.)). Так как в России целая часть числа от дробной традиционно отделяется запятой, то для обозначения того же понятия исторически используется термин «плавающая запятая», однако в настоящее время в русскоязычной литературе и технической документации можно встретить оба варианта.

Происхождение названия

Название «плавающая запятая» происходит от того, что запятая в позиционном представлении числа (десятичная запятая, или, для компьютеров, двоичная запятая — далее по тексту просто запятая) может быть помещена где угодно относительно цифр в строке. Это положение запятой указывается отдельно во внутреннем представлении. Таким образом, представление числа в форме с плавающей запятой может рассматриваться как компьютерная реализация экспоненциальной записи чисел.

Преимущество использования представления чисел в формате с плавающей запятой над представлением в формате с фиксированной запятойцелыми числами) состоит в том, что можно использовать существенно больший диапазон значений при неизменной относительной точности. Например, в форме с фиксированной запятой число, занимающее 8 разрядов в целой части и 2 разряда после запятой, может быть представлено в виде 123456,78; 8765,43; 123,00 и так далее. В свою очередь, в формате с плавающей запятой (в тех же 8 разрядах) можно записать числа 1,2345678; 1234567,8; 0,000012345678; 12345678000000000 и так далее, но для этого необходимо двухразрядное дополнительное поле для записи показателей степени 10 от 0 до 1610, при этом общее число разрядов составит 8+2=10.

Скорость выполнения компьютером операций с числами, представленными в форме с плавающей запятой, измеряется в мегафлопcах (от англ. FLOPS — число операций с плавающей запятой в секунду), гигафлопcах и так далее, и является одной из основных единиц измерения быстродействия вычислительных систем.

Структура числа

Число с плавающей запятой состоит из:

  • Знака мантиссы (указывающего на отрицательность или положительность числа)
  • Мантиссы (выражающей значение числа без учёта порядка)
  • Знака порядка
  • Порядка (выражающего степень основания числа, на которое умножается мантисса)

Нормальная форма и нормализованная форма

Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1) (0\le a<1). Число с плавающей запятой, находящееся не в нормальной форме, теряет точность по сравнению с нормальной формой.[источник не указан 1292 дня] Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001·100, 0,001·10−1, 0,01·10−2, 0,1·10−3), поэтому распространена (особенно в информатике) также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно) (1\le a<q). В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0.
Так как старший разряд (целая часть числа) мантиссы двоичного числа (кроме 0) в нормализованном виде равен «1», то при записи мантиссы числа в эвм старший разряд можно не записывать, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого свойства нет.

Использование в вычислительных машинах

В вычислительных машинах показатель степени принято отделять от мантиссы буквой «E» (exponent). Например, число 1,528535047·10−25 в большинстве языков программирования высокого уровня записывается как 1.528535047E-25.

Краткий обзор

Существует несколько способов того, как строки из цифр могут представлять числа:

  • Наиболее распространённый путь представления значения числа из строки с цифрами — в виде целого числа — запятая (radix point) по умолчанию находится в конце строки.
  • В общем математическом представлении строка из цифр может быть сколь угодно длинной, а положение запятой обозначается путём явной записи символа запятой (или, на Западе, точки) в нужном месте.
  • В системах с представлением чисел в формате с фиксированной запятой существует определённое условие относительно положения запятой. Например, в строке из 8 цифр условие может предписывать положение запятой в середине записи (между 4-й и 5-й цифрой). Таким образом, строка «00012345» обозначает число 1,2345 (нули слева всегда можно отбросить).
  • В экспоненциальной записи используют стандартный (нормализованный) вид представления чисел. Число считается записанным в стандартном (нормализованном) виде, если оно записано в виде aq^n, где a, называемое мантиссой, такое, что 1\le a<q, n — целое, называется показатель степени и q — целое, основание системы счисления (на письме это обычно 10). То есть в мантиссе запятая помещается сразу после первой значащей (не равной нулю) цифры, считая слева направо, а дальнейшая запись даёт информацию о действительном значении числа. Например, период обращения (на орбите) спутника планеты Юпитера Ио, который равен 152853,5047 с, в стандартном виде можно записать как 1,528535047·105 с. Побочным эффектом ограничения на значения мантиссы является то, что в такой записи невозможно изобразить число 0.
  • Запись в форме с плавающей запятой похожа на запись чисел в стандартном виде, но мантисса и экспонента записываются раздельно. Мантисса записывается в нормализованном формате — с фиксированной запятой, подразумеваемой после первой значащей цифры. Возвращаясь к примеру с Ио́, запись в форме с плавающей запятой будет 1528535047 с показателем 5. Это означает, что записанное число в 105 раз больше числа 1,528535047, то есть для получения подразумеваемого числа запятая сдвигается на 5 разрядов вправо. Однако, запись в форме с плавающей запятой используется в основном в электронном представлении чисел, при котором используется основание системы счисления 2, а не 10. Кроме того, в двоичной записи мантисса обычно денормализована, то есть запятая подразумевается до первой цифры, а не после, и целой части вообще не имеется в виду — так появляется возможность и значение 0 сохранить естественным образом. Таким образом, десятичная 9 в двоичном представлении с плавающей запятой будет записана как мантисса +1001000…0 и показатель +0…0100. Отсюда, например, беды с двоичным представлением чисел типа одной десятой (0,1), для которой двоичное представление мантиссы оказывается периодической двоичной дробью — по аналогии с 1/3, которую нельзя конечным количеством цифр записать в десятичной системе счисления.

Запись числа в форме с плавающей запятой позволяет производить вычисления над широким диапазоном величин, сочетая фиксированное количество разрядов и точность. Например, в десятичной системе предоставления чисел с плавающей запятой (3 разряда) операцию умножения, которую мы бы записали как

0,12 × 0,12 = 0,0144

в нормальной форме представляется в виде

(1,20·10−1) × (1,20·10−1) = (1,44·10−2).

В формате с фиксированной запятой мы бы получили вынужденное округление

0,120 × 0,120 = 0,014.

Мы потеряли крайний правый разряд числа, так как данный формат не позволяет запятой «плавать» по записи числа.

Диапазон чисел, представимых в формате с плавающей запятой

Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. На обычной 32-битной вычислительной машине, использующей двойную точность (64 бита), мантисса составляет 1 бит знак + 52 бита, показатель — 1 бит знак + 10 бит. Таким образом получаем диапазон точности примерно от 4,94·10−324 до 1.79·10308 (от 2−52 × 2−1022 до ~1 × 21024). Пара значений показателя зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся значения NaN (Not a Number, не число) и +/-INF (Infinity, бесконечность), получающихся в результате операций типа деления на ноль нуля, положительных и отрицательных чисел. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например GPU) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти выделенный под мантиссу и показатель задаётся программно, и ограничивается лишь объёмом доступной памяти ЭВМ.


Точность Одинарная Двойная Расширенная
Размер (байты) 4 8 10
Число десятичных знаков ~7.2 ~15.9 ~19.2
Наименьшее значение (>0), denorm 1,4·10−45 5,0·10−324 1,9·10−4951
Наименьшее значение (>0), normal 1,2·10−38 2,3·10−308 3,4·10−4932
Наибольшее значение 3,4×10+38 1,7×10+308 1,1×10+4932
Поля S-E-F S-E-F S-E-I-F
Размеры полей 1-8-23 1-11-52 1-15-1-63
  • S — знак, E — показатель степени, I — целая часть, F — дробная часть
  • Так же, как и для целых, знаковый бит — старший.

Машинная эпсилон

В отличие от чисел с фиксированной запятой, сетка чисел, которые способна отобразить арифметика с плавающей запятой, неравномерна: она более густая для чисел с малыми порядками и более редкая — для чисел с большими порядками. Но относительная погрешность записи чисел одинакова и для малых чисел, и для больших. Поэтому можно ввести понятие машинной эпсилон.

Машинной эпсилон называется наименьшее положительное число ε такое, что 1 \oplus \varepsilon \neq 1 (знаком \oplus обозначено машинное сложение). Грубо говоря, числа a и b, соотносящиеся так, что 1 < \frac a b < 1+\varepsilon, машина не различает.

См. также

Литература

  • Н. А. Криницкий, Г. А. Миронов, Г. Д. Фролов Программирование. — М.: Государственное издательство физико-математической литературы, 1963. — 384 с.
  • Генри С. Уоррен, мл. Глава 15. Числа с плавающей точкой // Алгоритмические трюки для программистов = Hacker’s Delight. — М.: Вильямс, 2007. — С. 288. — ISBN 0-201-91465-4

Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Число с плавающей запятой" в других словарях:

  • Число с фиксированной запятой — Число с фиксированной запятой  формат представления вещественного числа в памяти ЭВМ в виде целого числа. При этом само число x и его целочисленное представление x′ связаны формулой , где z  цена (вес) младшего разряда. Простейший… …   Википедия

  • число с плавающей точкой (запятой) — — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN floating point number …   Справочник технического переводчика

  • Числа с плавающей запятой — Плавающая запятая  форма представления действительных чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Наиболее… …   Википедия

  • Число — У этого термина существуют и другие значения, см. Число (значения). Число  основное понятие математики[1], используемое для количественной характеристики, сравнения и нумерации объектов. Возникнув ещё в первобытном обществе из потребностей… …   Википедия

  • Число (матем.) — см. также: Число (лингвистика) Число абстракция, используемая для количественной характеристики объектов. Возникнув ещё в первобытном обществе из потребностей счёта, понятие числа изменялось и обогащалось и превратилось в важнейшее математическое …   Википедия

  • Число двойной точности — (Double precision, Double) компьютерный формат представления чисел, занимающий в памяти две последовательных ячейки (компьютерных слова; в случае 32 битного компьютера 64 бита или 8 байт). Как правило, обозначает формат числа с плавающей запятой… …   Википедия

  • Число одинарной точности — (англ. Single precision, Single)  широко распространенный компьютерный формат представления вещественных чисел, занимающий в памяти 32 бита (4 байта). Как правило, под ним понимают формат числа с плавающей запятой стандарта IEEE 754.… …   Википедия

  • Число четверной точности — (англ. Quadruple precision) компьютерный формат представления чисел с плавающей запятой, занимающий в памяти четыре последовательных ячейки (компьютерных слова; в случае 32 битного компьютера 128 бит или 16 байт). Как правило, обозначает… …   Википедия

  • Число половинной точности — (англ. half precision)  компьютерный формат представления чисел, занимающий в памяти половину компьютерного слова (в случае 32 битного компьютера  16 бит или 2 байта). Диапазон значений ± 2−24(5.96E 8)  65504. Приблизительная… …   Википедия

  • Числа с плавающей точкой — Плавающая запятая форма представления дробных чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Наиболее часто… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»