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

Поделись знанием:
Перейти к: навигация, поиск

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





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

Так как в некоторых, преимущественно англоязычных и англофицированных, странах (см. подробный список Decimal separator  (англ.)) при записи чисел целая часть отделяется от дробной точкой, то в терминологии этих стран фигурирует название «плавающая точка» (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 1), то есть 0 ⩽ a < 1. Число с плавающей запятой, находящееся не в нормальной форме, теряет точность по сравнению с нормальной формой.К:Википедия:Статьи без источников (тип: не указан)[источник не указан 5428 дней]

Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать как 0,000001×102, 0,00001×101, 0,0001×100, 0,001×10−1, 0,01×10−2, и так далее), поэтому распространена (особенно в информатике) также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно), то есть 1 ⩽ a < 10. В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0.

Старший разряд (целая часть числа) мантиссы двоичного числа (кроме 0) в нормализованном виде равен 1 (так называемая неявная единица), поэтому при записи мантиссы числа в ЭВМ старший разряд можно не записывать, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого свойства нет.

Способы записи

При ограниченных возможностях оформления (например, отображение числа на семисегментном индикаторе), а также при необходимости обеспечить быстрый и удобный ввод чисел, вместо записи вида m·be (m — мантисса; b — основание, чаще всего 10; e — экспонента), записывают лишь мантиссу и показатель степени, разделяя их буквой «E» (от англ. exponent). Основание при этом неявно полагают равным 10&. Например, число 1,528535047×10−25 в этом случае записывается как 1.528535047E-25.

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

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

  • Наиболее распространённый путь представления значения числа из строки с цифрами — в виде целого числа — запятая (radix point) по умолчанию находится в конце строки.
  • В общем математическом представлении строка из цифр может быть сколь угодно длинной, а положение запятой обозначается путём явной записи символа запятой (или, на Западе, точки) в нужном месте.
  • В системах с представлением чисел в формате с фиксированной запятой существует определённое условие относительно положения запятой. Например, в строке из 8 цифр условие может предписывать положение запятой в середине записи (между 4-й и 5-й цифрой). Таким образом, строка «00012345» обозначает число 1,2345 (нули слева всегда можно отбросить).
  • В экспоненциальной записи используют стандартный (нормализованный) вид представления чисел. Число считается записанным в стандартном (нормализованном) виде, если оно записано в виде <math>aq^n</math>, где <math>a</math>, называемое мантиссой, такое, что <math>1\le a<q</math>, <math>n</math> — целое, называется показатель степени и <math>q</math> — целое, основание системы счисления (на письме это обычно 10). То есть в мантиссе запятая помещается сразу после первой значащей (не равной нулю) цифры, считая слева направо, а дальнейшая запись даёт информацию о действительном значении числа. Например, период обращения (на орбите) спутника Юпитера Ио, который равен 152 853,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). В стандарте IEEE 754 несколько значений данного типа зарезервировано для обеспечения возможности представления специальных значений. К ним относятся значения 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 — дробная часть
  • Так же, как и для целых, знаковый бит — старший.

Машинный эпсилон

В отличие от чисел с фиксированной запятой, сетка чисел, которые способна отобразить арифметика с плавающей запятой, неравномерна: она более густая для чисел с малыми порядками и более редкая — для чисел с большими порядками. Но относительная погрешность записи чисел одинакова и для малых чисел, и для больших. Машинным эпсилоном называется наименьшее положительное число ε такое, что <math>1 \oplus \varepsilon \neq 1</math> (знаком <math>\oplus</math> обозначено машинное сложение). Грубо говоря, числа a и b, соотносящиеся так, что <math>1 < \frac a b < 1+\varepsilon</math>, машина не различает.

Для одинарной точности <math>\varepsilon = 2^{-24} \approx 5,96\cdot10^{-8}</math>, то есть, приблизительно 7 значащих цифр. Для двойной точности: <math>\varepsilon = 2^{-53} \approx 1,11\cdot10^{-16}</math>, 15 значащих цифр[1].

См. также

Напишите отзыв о статье "Число с плавающей запятой"

Примечания

  1. E. Cheney, David Kincaid. Numerical Mathematics and Computing. — Cengage Learning, 2012. — 43– p. — ISBN 1-133-71235-5.

Литература

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

Ссылки

  • [habrahabr.ru/post/112953/ Что нужно знать про арифметику с плавающей запятой]


Отрывок, характеризующий Число с плавающей запятой

– Что? Мама?… Что?
– Поди, поди к нему. Он просит твоей руки, – сказала графиня холодно, как показалось Наташе… – Поди… поди, – проговорила мать с грустью и укоризной вслед убегавшей дочери, и тяжело вздохнула.
Наташа не помнила, как она вошла в гостиную. Войдя в дверь и увидав его, она остановилась. «Неужели этот чужой человек сделался теперь всё для меня?» спросила она себя и мгновенно ответила: «Да, всё: он один теперь дороже для меня всего на свете». Князь Андрей подошел к ней, опустив глаза.
– Я полюбил вас с той минуты, как увидал вас. Могу ли я надеяться?
Он взглянул на нее, и серьезная страстность выражения ее лица поразила его. Лицо ее говорило: «Зачем спрашивать? Зачем сомневаться в том, чего нельзя не знать? Зачем говорить, когда нельзя словами выразить того, что чувствуешь».
Она приблизилась к нему и остановилась. Он взял ее руку и поцеловал.
– Любите ли вы меня?
– Да, да, – как будто с досадой проговорила Наташа, громко вздохнула, другой раз, чаще и чаще, и зарыдала.
– Об чем? Что с вами?
– Ах, я так счастлива, – отвечала она, улыбнулась сквозь слезы, нагнулась ближе к нему, подумала секунду, как будто спрашивая себя, можно ли это, и поцеловала его.
Князь Андрей держал ее руки, смотрел ей в глаза, и не находил в своей душе прежней любви к ней. В душе его вдруг повернулось что то: не было прежней поэтической и таинственной прелести желания, а была жалость к ее женской и детской слабости, был страх перед ее преданностью и доверчивостью, тяжелое и вместе радостное сознание долга, навеки связавшего его с нею. Настоящее чувство, хотя и не было так светло и поэтично как прежнее, было серьезнее и сильнее.
– Сказала ли вам maman, что это не может быть раньше года? – сказал князь Андрей, продолжая глядеть в ее глаза. «Неужели это я, та девочка ребенок (все так говорили обо мне) думала Наташа, неужели я теперь с этой минуты жена , равная этого чужого, милого, умного человека, уважаемого даже отцом моим. Неужели это правда! неужели правда, что теперь уже нельзя шутить жизнию, теперь уж я большая, теперь уж лежит на мне ответственность за всякое мое дело и слово? Да, что он спросил у меня?»
– Нет, – отвечала она, но она не понимала того, что он спрашивал.
– Простите меня, – сказал князь Андрей, – но вы так молоды, а я уже так много испытал жизни. Мне страшно за вас. Вы не знаете себя.
Наташа с сосредоточенным вниманием слушала, стараясь понять смысл его слов и не понимала.
– Как ни тяжел мне будет этот год, отсрочивающий мое счастье, – продолжал князь Андрей, – в этот срок вы поверите себя. Я прошу вас через год сделать мое счастье; но вы свободны: помолвка наша останется тайной и, ежели вы убедились бы, что вы не любите меня, или полюбили бы… – сказал князь Андрей с неестественной улыбкой.
– Зачем вы это говорите? – перебила его Наташа. – Вы знаете, что с того самого дня, как вы в первый раз приехали в Отрадное, я полюбила вас, – сказала она, твердо уверенная, что она говорила правду.
– В год вы узнаете себя…
– Целый год! – вдруг сказала Наташа, теперь только поняв то, что свадьба отсрочена на год. – Да отчего ж год? Отчего ж год?… – Князь Андрей стал ей объяснять причины этой отсрочки. Наташа не слушала его.
– И нельзя иначе? – спросила она. Князь Андрей ничего не ответил, но в лице его выразилась невозможность изменить это решение.
– Это ужасно! Нет, это ужасно, ужасно! – вдруг заговорила Наташа и опять зарыдала. – Я умру, дожидаясь года: это нельзя, это ужасно. – Она взглянула в лицо своего жениха и увидала на нем выражение сострадания и недоумения.
– Нет, нет, я всё сделаю, – сказала она, вдруг остановив слезы, – я так счастлива! – Отец и мать вошли в комнату и благословили жениха и невесту.
С этого дня князь Андрей женихом стал ездить к Ростовым.


Обручения не было и никому не было объявлено о помолвке Болконского с Наташей; на этом настоял князь Андрей. Он говорил, что так как он причиной отсрочки, то он и должен нести всю тяжесть ее. Он говорил, что он навеки связал себя своим словом, но что он не хочет связывать Наташу и предоставляет ей полную свободу. Ежели она через полгода почувствует, что она не любит его, она будет в своем праве, ежели откажет ему. Само собою разумеется, что ни родители, ни Наташа не хотели слышать об этом; но князь Андрей настаивал на своем. Князь Андрей бывал каждый день у Ростовых, но не как жених обращался с Наташей: он говорил ей вы и целовал только ее руку. Между князем Андреем и Наташей после дня предложения установились совсем другие чем прежде, близкие, простые отношения. Они как будто до сих пор не знали друг друга. И он и она любили вспоминать о том, как они смотрели друг на друга, когда были еще ничем , теперь оба они чувствовали себя совсем другими существами: тогда притворными, теперь простыми и искренними. Сначала в семействе чувствовалась неловкость в обращении с князем Андреем; он казался человеком из чуждого мира, и Наташа долго приучала домашних к князю Андрею и с гордостью уверяла всех, что он только кажется таким особенным, а что он такой же, как и все, и что она его не боится и что никто не должен бояться его. После нескольких дней, в семействе к нему привыкли и не стесняясь вели при нем прежний образ жизни, в котором он принимал участие. Он про хозяйство умел говорить с графом и про наряды с графиней и Наташей, и про альбомы и канву с Соней. Иногда домашние Ростовы между собою и при князе Андрее удивлялись тому, как всё это случилось и как очевидны были предзнаменования этого: и приезд князя Андрея в Отрадное, и их приезд в Петербург, и сходство между Наташей и князем Андреем, которое заметила няня в первый приезд князя Андрея, и столкновение в 1805 м году между Андреем и Николаем, и еще много других предзнаменований того, что случилось, было замечено домашними.
В доме царствовала та поэтическая скука и молчаливость, которая всегда сопутствует присутствию жениха и невесты. Часто сидя вместе, все молчали. Иногда вставали и уходили, и жених с невестой, оставаясь одни, всё также молчали. Редко они говорили о будущей своей жизни. Князю Андрею страшно и совестно было говорить об этом. Наташа разделяла это чувство, как и все его чувства, которые она постоянно угадывала. Один раз Наташа стала расспрашивать про его сына. Князь Андрей покраснел, что с ним часто случалось теперь и что особенно любила Наташа, и сказал, что сын его не будет жить с ними.
– Отчего? – испуганно сказала Наташа.
– Я не могу отнять его у деда и потом…
– Как бы я его любила! – сказала Наташа, тотчас же угадав его мысль; но я знаю, вы хотите, чтобы не было предлогов обвинять вас и меня.
Старый граф иногда подходил к князю Андрею, целовал его, спрашивал у него совета на счет воспитания Пети или службы Николая. Старая графиня вздыхала, глядя на них. Соня боялась всякую минуту быть лишней и старалась находить предлоги оставлять их одних, когда им этого и не нужно было. Когда князь Андрей говорил (он очень хорошо рассказывал), Наташа с гордостью слушала его; когда она говорила, то со страхом и радостью замечала, что он внимательно и испытующе смотрит на нее. Она с недоумением спрашивала себя: «Что он ищет во мне? Чего то он добивается своим взглядом! Что, как нет во мне того, что он ищет этим взглядом?» Иногда она входила в свойственное ей безумно веселое расположение духа, и тогда она особенно любила слушать и смотреть, как князь Андрей смеялся. Он редко смеялся, но зато, когда он смеялся, то отдавался весь своему смеху, и всякий раз после этого смеха она чувствовала себя ближе к нему. Наташа была бы совершенно счастлива, ежели бы мысль о предстоящей и приближающейся разлуке не пугала ее, так как и он бледнел и холодел при одной мысли о том.
Накануне своего отъезда из Петербурга, князь Андрей привез с собой Пьера, со времени бала ни разу не бывшего у Ростовых. Пьер казался растерянным и смущенным. Он разговаривал с матерью. Наташа села с Соней у шахматного столика, приглашая этим к себе князя Андрея. Он подошел к ним.
– Вы ведь давно знаете Безухого? – спросил он. – Вы любите его?
– Да, он славный, но смешной очень.
И она, как всегда говоря о Пьере, стала рассказывать анекдоты о его рассеянности, анекдоты, которые даже выдумывали на него.
– Вы знаете, я поверил ему нашу тайну, – сказал князь Андрей. – Я знаю его с детства. Это золотое сердце. Я вас прошу, Натали, – сказал он вдруг серьезно; – я уеду, Бог знает, что может случиться. Вы можете разлю… Ну, знаю, что я не должен говорить об этом. Одно, – чтобы ни случилось с вами, когда меня не будет…
– Что ж случится?…
– Какое бы горе ни было, – продолжал князь Андрей, – я вас прошу, m lle Sophie, что бы ни случилось, обратитесь к нему одному за советом и помощью. Это самый рассеянный и смешной человек, но самое золотое сердце.
Ни отец и мать, ни Соня, ни сам князь Андрей не могли предвидеть того, как подействует на Наташу расставанье с ее женихом. Красная и взволнованная, с сухими глазами, она ходила этот день по дому, занимаясь самыми ничтожными делами, как будто не понимая того, что ожидает ее. Она не плакала и в ту минуту, как он, прощаясь, последний раз поцеловал ее руку. – Не уезжайте! – только проговорила она ему таким голосом, который заставил его задуматься о том, не нужно ли ему действительно остаться и который он долго помнил после этого. Когда он уехал, она тоже не плакала; но несколько дней она не плача сидела в своей комнате, не интересовалась ничем и только говорила иногда: – Ах, зачем он уехал!
Но через две недели после его отъезда, она так же неожиданно для окружающих ее, очнулась от своей нравственной болезни, стала такая же как прежде, но только с измененной нравственной физиогномией, как дети с другим лицом встают с постели после продолжительной болезни.


Здоровье и характер князя Николая Андреича Болконского, в этот последний год после отъезда сына, очень ослабели. Он сделался еще более раздражителен, чем прежде, и все вспышки его беспричинного гнева большей частью обрушивались на княжне Марье. Он как будто старательно изыскивал все больные места ее, чтобы как можно жесточе нравственно мучить ее. У княжны Марьи были две страсти и потому две радости: племянник Николушка и религия, и обе были любимыми темами нападений и насмешек князя. О чем бы ни заговорили, он сводил разговор на суеверия старых девок или на баловство и порчу детей. – «Тебе хочется его (Николеньку) сделать такой же старой девкой, как ты сама; напрасно: князю Андрею нужно сына, а не девку», говорил он. Или, обращаясь к mademoiselle Bourime, он спрашивал ее при княжне Марье, как ей нравятся наши попы и образа, и шутил…
Он беспрестанно больно оскорблял княжну Марью, но дочь даже не делала усилий над собой, чтобы прощать его. Разве мог он быть виноват перед нею, и разве мог отец ее, который, она всё таки знала это, любил ее, быть несправедливым? Да и что такое справедливость? Княжна никогда не думала об этом гордом слове: «справедливость». Все сложные законы человечества сосредоточивались для нее в одном простом и ясном законе – в законе любви и самоотвержения, преподанном нам Тем, Который с любовью страдал за человечество, когда сам он – Бог. Что ей было за дело до справедливости или несправедливости других людей? Ей надо было самой страдать и любить, и это она делала.
Зимой в Лысые Горы приезжал князь Андрей, был весел, кроток и нежен, каким его давно не видала княжна Марья. Она предчувствовала, что с ним что то случилось, но он не сказал ничего княжне Марье о своей любви. Перед отъездом князь Андрей долго беседовал о чем то с отцом и княжна Марья заметила, что перед отъездом оба были недовольны друг другом.
Вскоре после отъезда князя Андрея, княжна Марья писала из Лысых Гор в Петербург своему другу Жюли Карагиной, которую княжна Марья мечтала, как мечтают всегда девушки, выдать за своего брата, и которая в это время была в трауре по случаю смерти своего брата, убитого в Турции.