Что такое плавающая точка: Плавающая точка | это… Что такое Плавающая точка?
Содержание
Плавающая точка | это… Что такое Плавающая точка?
Структура числа
Число с плавающей запятой состоит из:
Мантиссы (выражающей значение числа без учёта порядка)
Знака мантиссы (указывающего на отрицательность или положительность числа)
Порядка (выражающего степень основания числа, на которое умножается мантисса)
Знака порядка
Нормальная форма
Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1). Число с плавающей запятой, находящееся не в нормальной форме теряет точность по сравнению с нормальной формой. Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001 * 100, 0,001 * 10-1, 0,01 * 10-2, 0,1 * 10-3), поэтому распространена (особенно в информатике) также другая форма, в которой мантисса принимает значения от 1 (включительно) до 10 (не включительно).
В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0.
Использование в вычислительных машинах
В вычислительных машинах показатель степени принято отделять от мантиссы буквой «E» (exponent). Например, число 1,528535047 × 10-25 в большинстве языков программирования высокого уровня записывается как 1.528535047E-25.
Краткий обзор
Существует несколько способов того, как строки из цифр могут представлять числа:
Наиболее распространённый путь представления значения числа из строки с цифрами — в виде целого числа — запятая (radix point) по-умолчанию находится в конце строки.
В общем математическом представлении строка из цифр может быть сколь угодно длинной, а положение запятой обозначается путём явной записи символа запятой (или, на Западе, точки) в нужном месте.
В системах с представлением чисел в формате с фиксированной запятой существует определённое условие относительно положения запятой. Например, в строке из 8 цифр условие может предписывать положение запятой в середине записи (между 4-й и 5-й цифрой). Таким образом, строка «00012345» обозначает число 1,2345 (нули слева всегда можно отбросить).
В экспоненциальной записи используют стандартный (нормальный?) вид представления чисел. Число считается записанным в стандартном виде, если оно записано в виде aqn, где a такое, что , называется мантиссой, n — целое, называется показатель степени и q — целое, основание системы счисления (на письме это обычно 10). То есть в мантиссе запятая помещается сразу после первой значащей (не равной нулю) цифры, считая слева направо, а дальнейшая запись даёт информацию о действительном значении числа. Например, период обращения (на орбите) спутника планеты Юпитера Ио́, который равен 152853,5047 с, в стандартном виде можно записать как 1,528535047 × 10
5. Побочным эффектом ограничения на значения мантиссы является то, что в такой записи невозможно изобразить число 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 бита), мантисса составляет 52 бита + 1 знаковый, показатель — 11 бит. Таким образом получаем диапазон точности примерно от 4,94 × 10 −324 до 1.79 × 10308 (от 2−52 × 2−1022 до ~1 × 21024). Пара значений показателя зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся значения бесконечность), получающихся в результате операций типа деления на ноль нуля, положительных и отрицательных чисел. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например GPU) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти выделенный под мантиссу и показатель задаётся программно, и ограничивается лишь объёмом доступной памяти ЭВМ.
Плавающая точка | это… Что такое Плавающая точка?
Структура числа
Число с плавающей запятой состоит из:
Мантиссы (выражающей значение числа без учёта порядка)
Знака мантиссы (указывающего на отрицательность или положительность числа)
Порядка (выражающего степень основания числа, на которое умножается мантисса)
Знака порядка
Нормальная форма
Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1). Число с плавающей запятой, находящееся не в нормальной форме теряет точность по сравнению с нормальной формой. Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001 * 100, 0,001 * 10-1, 0,01 * 10-2, 0,1 * 10-3), поэтому распространена (особенно в информатике) также другая форма, в которой мантисса принимает значения от 1 (включительно) до 10 (не включительно). В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0.
Использование в вычислительных машинах
В вычислительных машинах показатель степени принято отделять от мантиссы буквой «E» (exponent). Например, число 1,528535047 × 10-25 в большинстве языков программирования высокого уровня записывается как 1.528535047E-25.
Краткий обзор
Существует несколько способов того, как строки из цифр могут представлять числа:
Наиболее распространённый путь представления значения числа из строки с цифрами — в виде целого числа — запятая (radix point) по-умолчанию находится в конце строки.
В общем математическом представлении строка из цифр может быть сколь угодно длинной, а положение запятой обозначается путём явной записи символа запятой (или, на Западе, точки) в нужном месте.
В системах с представлением чисел в формате с фиксированной запятой существует определённое условие относительно положения запятой. Например, в строке из 8 цифр условие может предписывать положение запятой в середине записи (между 4-й и 5-й цифрой). Таким образом, строка «00012345» обозначает число 1,2345 (нули слева всегда можно отбросить).
В экспоненциальной записи используют стандартный (нормальный?) вид представления чисел. Число считается записанным в стандартном виде, если оно записано в виде aqn, где a такое, что , называется мантиссой, n — целое, называется показатель степени и q — целое, основание системы счисления (на письме это обычно 10). То есть в мантиссе запятая помещается сразу после первой значащей (не равной нулю) цифры, считая слева направо, а дальнейшая запись даёт информацию о действительном значении числа. Например, период обращения (на орбите) спутника планеты Юпитера Ио́, который равен 152853,5047 с, в стандартном виде можно записать как 1,528535047 × 10 5. Побочным эффектом ограничения на значения мантиссы является то, что в такой записи невозможно изобразить число 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 бита), мантисса составляет 52 бита + 1 знаковый, показатель — 11 бит. Таким образом получаем диапазон точности примерно от 4,94 × 10−324 до 1.79 × 10308 (от 2−52 × 2−1022 до ~1 × 21024). Пара значений показателя зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся значения бесконечность), получающихся в результате операций типа деления на ноль нуля, положительных и отрицательных чисел. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например GPU) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти выделенный под мантиссу и показатель задаётся программно, и ограничивается лишь объёмом доступной памяти ЭВМ.
Руководство по операциям с плавающей запятой — Числа с плавающей запятой
Зачем нужны числа с плавающей запятой
Поскольку память компьютера ограничена, вы не можете хранить числа с бесконечной точностью, независимо от того, используете ли вы двоичные или десятичные дроби: в какой-то момент вы надо отрезать. Но какая точность нужна? А где нужен? Сколько целых цифр и сколько дробей?
Для инженера, строящего шоссе, не имеет значения, 10 метров оно или 10,0001 метра в ширину — его измерения, вероятно, изначально не так точны.
Для того, кто проектирует микрочип, 0,0001 метра (десятая доля миллиметра) — огромная разница. Но им никогда не придется иметь дело с расстоянием, превышающим 0,1 метра.
Физик должен использовать скорость света (около 300000000) и гравитационную постоянную Ньютона (около 0,00000000000667) вместе в одном вычислении.
Чтобы удовлетворить инженера и разработчика микросхем, числовой формат должен обеспечивать точность для чисел самых разных величин. Однако только 9Требуется относительная 0005 точность. Чтобы удовлетворить физика, должна быть возможность выполнять вычисления с использованием чисел с разными величинами.
По сути, наличие фиксированного количества целых и дробных цифр бесполезно, и решением является формат с плавающей запятой .
Как работают числа с плавающей запятой
Идея состоит в том, чтобы составить число из двух основных частей:
мантиссы , содержащие цифры числа. Отрицательные мантиссы представляют отрицательные числа.
Показатель степени , указывающий, где находится десятичная (или двоичная) точка относительно начала мантиссы. Отрицательные показатели представляют очень маленькие числа (т. е. близкие к нулю).
Такой формат удовлетворяет всем требованиям:
Он может представлять числа с самыми разными величинами (ограничено длиной экспоненты)
Обеспечивает одинаковую относительную точность для всех величин (ограниченных длиной мантиссы)
Это позволяет производить расчеты по величине: умножение очень большого и очень маленького числа сохраняет точность обоих в результате.
Десятичные числа с плавающей запятой обычно принимают форму экспоненциальной записи с
явная точка всегда между 1-й и 2-й цифрами. Показатель степени
либо написано явно, включая базу, либо используется e для
отделить его от мантиссы.
Значимая
Экспонента
Научное обозначение
Значение фиксированной точки
1,5
4
1,5 ⋅ 10 4
15000
-2,001
2
-2,001 ⋅ 10 2
-200,1
5
-3
5 ⋅ 10 -3
0,005
6,667
-11
6.667е-11
0,00000000006667
Стандарт
Почти все аппаратные средства и языки программирования используют числа с плавающей запятой в тех же двоичных форматах, которые определены в стандарте IEEE 754. Обычные форматы имеют общую длину 32 или 64 бита:
Формат
Всего битов
Значимые биты
Биты экспоненты
Наименьшее число
Наибольшее число
Одинарная точность
32
23 + 1 знак
8
ок. 1,2 ⋅ 10 -38
ок. 3,4 ⋅ 10 38
Двойная точность
64
52 + 1 знак
11
ок. 2,2 ⋅ 10 -308
ок. 1,8 ⋅ 10 308
Обратите внимание, что есть некоторые особенности:
Фактическая последовательность битов — это первый бит знака, за которым следует показатель степени и, наконец, биты мантиссы.
Показатель степени не имеет знака; вместо этого из него вычитается смещение экспоненты , равное (127 для одинарной и 1023 для двойной точности). Это и последовательность битов позволяют правильно сравнивать и сортировать числа с плавающей запятой, даже если они интерпретируются как целые числа.
Старшая значащая цифра значащего выражения опущена и принимается равной 1, за исключением субнормальных чисел , которые отмечены нулевым показателем и допускают диапазон чисел за пределами наименьших чисел, указанных в таблице выше, за счет точности.
Существуют отдельные положительных и отрицательных нулевых значения , отличающиеся битом знака, где все остальные биты равны 0. Их следует считать равными, даже если их битовые комбинации различны.
Существуют специальные положительных и отрицательных бесконечных значения, где показатель степени состоит из 1 бит, а мантиссы — из 0 бит. Это результаты вычислений, в которых превышен положительный диапазон показателя степени, или деления обычного числа на ноль.
Существуют специальные значения , а не числа (или NaN), где показатель степени равен 1 битам, а мантиссы равны , а не , все 0 битам. Они представляют собой результат различных неопределенных вычислений (таких как умножение 0 на бесконечность, любые вычисления, включающие значение NaN, или случаи, специфичные для приложения). Даже идентичные по битам значения NaN должны считаться равными , а не .
Если это кажется слишком абстрактным и вы хотите увидеть, как некоторые конкретные значения выглядят в IEE 754, попробуйте Float Toy, визуализацию IEEE 754 или Float Exposed.
Метод хранения и вычисления чисел, в которых десятичные запятые не выстраиваются в ряд, как в числах с фиксированной запятой. Значимые цифры хранятся в виде единицы, называемой «мантисса», а положение точки счисления (десятичная точка в базе 10) хранится в отдельной единице, называемой «показатель степени». Методы с плавающей запятой используются для быстрого вычисления большого диапазона чисел.
Операции с плавающей запятой могут быть реализованы в программном обеспечении или в модуле с плавающей запятой (FPU), который может быть отдельной микросхемой «математического сопроцессора» или схемой в ЦП. См. математический сопроцессор, двоичные числа и NaN.
ПРИМЕРЫ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ Значение экспоненты мантиссы
71 0 71
71 1 710
71 2 7100
71 -1 7,1
Как хранятся числа Существует четыре способа хранения чисел в компьютере, и в этом примере каждый из них содержит десятичное число 7100.
PCMag. com является ведущим авторитетом в области технологий, предоставляющим независимые лабораторные обзоры новейших продуктов и услуг. Наш экспертный отраслевой анализ и практические решения помогут вам принимать более обоснованные решения о покупке и получать больше от технологий.
Как мы тестируем Редакционные принципы
(Открывается в новом окне)
Логотип Зиффмедиа
(Открывается в новом окне)
Логотип Аскмен
(Открывается в новом окне)
Логотип Экстримтек
(Открывается в новом окне)
Логотип ИНГ
(Открывается в новом окне)
Логотип Mashable
(Открывается в новом окне)
Предлагает логотип
(Открывается в новом окне)
Логотип RetailMeNot
(Открывается в новом окне)
Логотип Speedtest
(Открывается в новом окне)
Логотип Спайсворкс
(Открывается в новом окне)
PCMag поддерживает Group Black и ее миссию по увеличению разнообразия голосов в СМИ и владельцев СМИ.