Тип float | Microsoft Learn

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья

Числа с плавающей запятой используют формат IEEE (Института инженеров по электротехнике и электронике).

Значения с одиночной точностью и типом float имеют 4 байта, состоят из бита знака, 8-разрядной двоичной экспоненты excess-127 и 23-битной мантиссы. Мантисса представляет число от 1,0 до 2,0. Поскольку бит высокого порядка мантиссы всегда равен 1, он не сохраняется в числе. Это представление обеспечивает для типа float диапазон примерно от 3,4E–38 до 3,4E+38.

Можно объявить переменные в качестве типа float или double в зависимости от нужд приложения. Основные различия между двумя типами значения заключаются в представляемой ими значимости, требуемых ресурсах хранения и диапазоне. В следующей таблице показана связь между значимостью и требованиями к хранению.

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

TypeЗначимые цифрыЧисло байтов
float6–74
double15–168

Переменные с плавающей запятой представлены мантиссой, которая содержит значение числа, и экспонентой, которая содержит порядок возрастания числа.

В следующей таблице показано количество битов, выделенных мантиссе и экспоненте для каждого типа с плавающей запятой. Наиболее значимый бит любого типа float или double — всегда бит знака. Если он равен 1, число считается отрицательным; в противном случае — положительным.

Длина экспонент и мантисс

TypeДлина экспонентыДлина мантиссы
float8 бит23 бита
double11 бит52 бита

Поскольку экспоненты хранятся в форме без знака, экспоненты смещены на половину своего возможного значения. Для типа float смещение составляет 127; для типа double это 1023. Можно вычислить фактическое значение экспоненты, вычтя значение смещения из значения экспоненты.

Мантисса хранится в виде бинарной доли, которая больше или равна 1 и меньше 2. Для типов float и double в мантиссе подразумевается наличие начального 1 в наиболее значимой битовой позиции, поэтому фактически длина мантисс составляет 24 и 53 бит соответственно, даже если наиболее значимый бит никогда не хранится в памяти.

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

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

Обратите внимание, что номера, сохраненные в регистрах 80x87, всегда представлены в 80-разрядной нормализованной форме; при сохранении в 32- или 64-разрядных переменных с плавающей запятой числа могут быть представлены только в ненормализованной форме (переменные типов float и long).

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

TypeМинимальное значениеМаксимальное значение
плавающее1,175494351 E – 383,402823466 E + 38
double2,2250738585072014 E – 3081,7976931348623158 E + 308

Если точность менее важна, чем размер хранимых данных, имеет смысл использовать тип float для переменных с плавающей запятой. И наоборот, если точность — наиболее важный критерий, используйте тип double.

Уровень переменных с плавающей запятой можно повысить до типа большей значимости (преобразование типа float в тип double). Повышение уровня часто происходит при выполнении арифметических действий с переменными плавающего типа. Это арифметическое действие всегда выполняется на том же уровне точности, что и переменная с наивысшим уровнем точности. Например, проанализируйте объявления следующих типов.

float f_short;
double f_long;
long double f_longer;
f_short = f_short * f_long;

В предыдущем примере уровень переменной f_short повышается до типа double, а затем переменная умножается на f_long; затем результат округляется до типа float и присваивается объекту f_short.

В следующем примере (с использованием объявлений из предыдущего примера) арифметическая операция выполняется на уровне точности переменной типа float (32-разрядной). Уровень результата затем повышается до уровня double.

f_longer = f_short * f_short;

Хранение базовых типов

Типы данных в Python — Робикс кружок робототехники

Главная › База знаний › Программирование › Python › Числовые типы данных в Python: integer, float

Переменные

Любые данные хранятся в ячейках памяти компьютера. Когда мы вводим число, оно помещается в какую-либо ячейку памяти. Возникают вопросы: Куда именно? Как впоследствии обращаться к этим данными? 

В программе данные связываются с каким-либо именем. В дальнейшем обращение к ним возможно по этому имени-переменной.

Термин «переменная» обозначает, что ее сущность может меняться, она непостоянна.

В программе на языке Python, как и на большинстве других языков, связь между данными и переменными устанавливается с помощью знака = (знак равно). Данная операция называется присваиванием.

Например, выражение, представленное ниже, означает, что на объект, представляющий собой число 4, находящееся в определенной области памяти, теперь ссылается переменная a.

Имена переменных могут быть любыми. Однако есть несколько общих правил их написания:

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

Чтобы узнать значение, на которое ссылается переменная, находясь в режиме интерпретатора, достаточно ее вызвать, то есть написать имя и нажать Enter. 

Числовые типы данных

Напишите в консоли следующую команду и нажмите Enter:

>>> 1 + 1

В результате получим следующее:

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

Целые числа (тип int) — это положительные и отрицательные целые числа, а также 0, например: 0, -1, 1, 1827 и т.д. 

Числа с плавающей точкой (тип float) — это вещественные, числа (рациональные + иррациональные числа), например: 0, -1, 1, 1827, 0. 5, -0.76, 3.141592 (число пи) и т.д.

Операции

Операция — это выполнение каких-либо действий над данными (операндами). Действие выполняется оператором (сложение(+), умножение(*) и т.п. ). Результат операции зависит как от оператора, так и от операндов.

Изменение типа переменных

Давайте создадим две переменные A и B, которым присвоим некоторые значения:

>>> A = 10
>>> B = 1.24

В зависимости от введенной информации, Python самостоятельно определяет тип переменно. Чтобы посмотреть типы заданных переменных, воспользуемся функцией type(), для этого введем следующую команду:

>>> type(A)

После ввода на экране появится тип переменной А, в нашем случае это будет целое число, то есть на экране мы увидим следующее:

>>> type(A)
<class 'int'>

Проведем ту же операцию со второй переменой, на экране увидим следующее:

>>> type(B)
<class 'float'>

Попробуем сложить переменные разных типов данных и выясним, к какому типу относится полученный результат:

>>> С = A + B
>>> type(С)
<class 'float'>

Как можете заметить, в итоге мы получили переменную float.

Любые математические действия можно выполнять только над одинаковыми типами данных, т.е. либо все float, либо все int и т.д.

Но тогда как мы сейчас смогли это сделать? Python самостоятельно производит перевод переменных в нужный тип данных. Вы можете самостоятельно произвести данный переход с помощью функций int(), float():

>>> type(A)
<class 'int'>
>>> A = float(A)
>>> type(A)
<class 'float'>
>>> type(B)
<class 'float'>
>>> B = int(B)
>>> type(B)
<class 'int'>
>>> A
10.0
>>> B
1

Как видите, значение B было округлено. Рассмотрим подробнее округление на функции int(), которая переводит вещественное число в целое:

>>> A1 = 0.1
>>> A2 = 0.4
>>> A3 = 0.7
>>> A4 = 1.1
>>> A1 = int(A1)
>>> A2 = int(A2)
>>> A3 = int(A3)
>>> A4 = int(A4)
>>> A1
0
>>> A2
0
>>> A3
0
>>> A4
1

Как можно заметить, округление происходит до ближайшего целого числа по направлению в сторону нуля, то есть в меньшую сторону.

Основные математические операции в Python

  • Cложение (+) используется для получения  суммы (в отношении чисел), было нами рассмотрено выше.
  • Вычитание (-) — операция, противоположная сложению.
  • Умножение(*) используется для получения произведения сомножителей.
>>> type(2 * 2)
<class 'int'>
>>> type(0.1 * 2)
<class 'float'>
>>> type(0.2 * 5)
<class 'float'>
  • Возведение в степень (**) используется для возведения числа в степень, то есть умножение числа на само себя столько раз, сколько указано в степени.
>>> 2 ** 3
8
>>> 2 ** 4
16
  • Деление (/) — действие, обратное умножению, используется для получения частного
>>> 4 / 2
2.0
>>> type(4/2)
<class 'float'>
>>> 2 / 4
0.5

Даже если делимое и делитель являются целыми числами и делитель содержится в делимом целое число раз, то результат деления будет float.

  • Целочисленное деление (//) нужно для получения целочисленного результата деления, то есть при данной операции отбрасывается дробная часть числа.
>>> 4 // 2
2
>>> type(4 / 2)
<class 'float'>
>>> 2//4
0
>>> type(2 // 4)
<class 'int'>
  • Получение остатка от деления (%). В результате данной операции Вы получаете то, что осталось от деления, то есть вы получаете то, что невозможно дальше делить. Например, в первом случае 4 делится без остатка — в 4 две 2, во втором случае 2 не разделить на 4, оно сразу уходит в остаток, в третьем случае 7 содержит две 3 (6), в остаток уходит 7 — 6 = 1.
>>> 4 % 2
0
>>> 2 % 4
2
>>> 7 % 3
1
  • Модуль числа (abs()) используется для получения модуля числа, то есть отбрасывается знак перед числом
>>> abs(-0.1)
0.1
>>> abs(0)
0
>>> abs(-283)
283
>>> abs(45)
45
  • Округление (round()) — данная операция округляет число до ближайшего целого числа, формат int.
>>> round(0.5)
0
>>> round(0.6)
1
>>> round(1.1)
1
>>> round(1.5)
2
>>> round(1.4)
1

Курсы Робикс, в которых изучается этот материал.

  1. Программирование на Python в Minecraft
  2. Duckietown робот с системой Автопилота

Сохраните или поделитесь

Что такое поплавок? (Информатика)

Что означает Float?

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

Реклама

Одним из наиболее распространенных определений, данных экспертами, является то, что число с плавающей запятой «имеет числа по обе стороны от десятичной дроби». Однако может быть проще сказать, что число с плавающей запятой включает десятичные дроби, а целое число — нет.

Некоторые отмечают, что тип данных с плавающей запятой используется в компьютерном программировании, когда требуется большая точность, чем могут обеспечить целые числа.

Techopedia объясняет Float

С первых дней компьютерного программирования числа с плавающей запятой обеспечивали возможность хранения чисел, включая десятичные дроби, в качестве типов данных. Понимание природы числа с плавающей запятой жизненно важно при преобразовании типов, при объявлении переменных и при использовании переменных в кодовой базе.

Неправильная обработка типов данных может привести к ошибкам.

Ранние примеры использования float включают FORTRAN, где тип данных float назывался «двойной точностью».

Был также «настоящий» тип данных, указывающий на число с плавающей запятой одинарной точности.

Еще одним ранним языком, использующим float, был COBOL, который до сих пор широко используется во многих учреждениях просто из-за неприязни к миграции устаревших систем. В статье на Medium, рассказывающей о широком использовании COBOL, делается отличный вывод о том, насколько ценными могут быть типы данных с плавающей запятой в программном обеспечении.

В качестве прямого примера давайте подумаем о программе данных IRS и о том, будет ли она использовать число с плавающей запятой или нет.

Если требования IRS не требуют представления части доллара, вполне достаточно целочисленного формата. Все переменные могут быть целыми числами, и можно избежать представления с плавающей запятой, что повысит эффективность кода.

С другой стороны, если программе нужно было бы сообщать часть доллара, программистам нужно было бы объявить переменную как число с плавающей запятой и хранить как доллары, так и центы в десятичном формате. Например, переменная с плавающей запятой для $10,50 будет объявлена ​​с содержимым 10,5.

Теперь проверьте, неверны ли типы данных. Если программа пытается сохранить 10,5 как целое число, она может содержать «10» или выдать ошибку. Параметры должны быть разработаны в соответствии с реальными данными, которые будут развернуты, и процедурами, которые будут реализованы в системе.

На протяжении многих лет компьютерного программирования использование чисел с плавающей запятой и других типов данных было оптимизировано для различных видов использования памяти. Однако, возвращаясь к статье Марианны Беллотти на языке COBOL, мы по-прежнему считаем, что размещение переменных с плавающей запятой требует работы и может привести к разного рода дебатам о наилучшем языке программирования или среде для данной системы.

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

  • Проектирование новых систем.
  • Миграция устаревших систем.
  • Или при выполнении текущего обслуживания систем, использующих этот тип данных.

Рекламные объявления

Тип данных с плавающей запятой – Основы программирования

Кеннет Лерой Басби и Дэйв Брауншвейг

Обзор

Тип данных с плавающей запятой использует формульное представление действительных чисел в качестве приближения, чтобы поддерживать компромисс между диапазоном и точностью. По этой причине вычисления с плавающей запятой часто встречаются в системах, которые содержат очень маленькие и очень большие действительные числа, требующие быстрого времени обработки. Число, как правило, представляется приблизительно фиксированным числом значащих цифр и масштабируется с использованием показателя степени в некотором фиксированном основании. [1]

Обсуждение

Тип данных с плавающей запятой — это семейство типов данных, которые действуют одинаково и отличаются только размером своих доменов (допустимые значения). Семейство типов данных с плавающей запятой представляет числовые значения с дробными частями. Технически они хранятся в виде двух целочисленных значений: мантисса и показатель степени . Семейство с плавающей запятой имеет одинаковые атрибуты и действует или ведет себя одинаково во всех языках программирования. Они всегда могут хранить отрицательные или положительные значения, поэтому они всегда подписаны; в отличие от целочисленного типа данных, который может быть беззнаковым. домен  для типов данных с плавающей запятой различается, поскольку они могут представлять очень большие или очень маленькие числа. Вместо того, чтобы говорить о фактических значениях, мы упомянем точность . Чем больше байт памяти, тем больше мантисса и показатель степени, а значит, больше точность.

Язык Зарезервированное слово Размер Точность Диапазон
С++ поплавок 32 бита / 4 байта 7 десятичных цифр ±3,40282347E+38
С++ двойной 64 бита / 8 байт 15 десятичных цифр ±1,79769313486231570E+308
С# поплавок 32 бита / 4 байта 7 десятичных цифр ±3,40282347E+38
С# двойной 32 бита / 4 байта 15 десятичных цифр ±1,79769313486231570E+308
Ява поплавок 32 бита / 4 байта 7 десятичных цифр ±3,40282347E+38
Ява двойной 32 бита / 4 байта 15 десятичных цифр ±1,79769313486231570E+308
JavaScript Номер 64 бита / 8 байт 15 десятичных цифр ±1,79769313486231570E+308
Питон с плавающей запятой() 64 бита / 8 байт 15 десятичных цифр ±1,79769313486231570E+308
Свифт Поплавок 32 бита / 4 байта 7 десятичных цифр ±3,40282347E+38
Свифт Двойной 64 бита / 8 байт 15 десятичных цифр ±1,79769313486231570E+308

Основные термины

двойной
Наиболее часто используемый тип данных семейства с плавающей запятой.