Float python что это
Перейти к содержимому

Float python что это

  • автор:

Преобразует число/строку с записью числа в вещественное число

Если аргумент является строкой, то запись должна содержать десятичное число и может иметь предшествующий знак и начальные(конечные) пробелы. Предшествующий знак может быть ‘+’ или ‘-‘ , знак ‘+’ не имеет никакого влияния на результат. Аргумент может также быть строкой, представляющей NaN (не число), или положительной или отрицательной бесконечностью. Точнее, входные данные должны соответствовать общепринятой грамматике после удаления начальных и конечных пробельных символов

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

Дополнительно смотрите материал по теме «Проблемы точности типа float в Python».

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

str_to_float = ' -3.500 ' x = float(str_to_float) print(x) # Вывод -3.5 x = float(10) print(x) # Вывод 10.0 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Функция abs(), абсолютное значение числа
  • Функция all(), все элементы True
  • Функция any(), хотя бы один элемент True
  • Функция ascii(), преобразует строку в ASCII
  • Функция bin(), число в двоичную строку
  • Класс bool(), логическое значение объекта
  • Функция breakpoint(), отладчик кода
  • Класс bytearray(), преобразует в массив байтов
  • Класс bytes(), преобразует в строку байтов
  • Функция callable(), проверяет можно ли вызвать объект
  • Функция chr(), число в символ Юникода
  • Класс classmethod, делает функцию методом класса
  • Функция compile() компилирует блок кода Python
  • Класс complex(), преобразует в комплексное число
  • Функция delattr(), удаляет атрибут объекта
  • Класс dict() создает словарь
  • Функция dir(), все атрибуты объекта
  • Функция divmod(), делит числа с остатком
  • Функция enumerate(), счетчик элементов последовательности
  • Функция eval(), выполняет строку-выражение с кодом
  • Функция exec(), выполняет блок кода
  • Функция filter(), фильтрует список по условию
  • Класс float(), преобразует в вещественное число
  • Функция format(), форматирует значение переменной
  • Класс frozenset(), преобразует в неизменяемое множество
  • Функция getattr(), значение атрибута по имени
  • Функция globals(), переменные глобальной области
  • Функция hasattr(), наличие атрибута объекта
  • Функция hash(), хэш-значение объекта
  • Функция help(), справка по любому объекту
  • Функция hex(), число в шестнадцатеричную строку
  • Функция id(), идентификатор объекта
  • Функция input(), ввод данных с клавиатуры
  • Класс int(), преобразует в тип int
  • Функция isinstance(), принадлежность экземпляра к классу
  • Функция issubclass(), проверяет наследование класса
  • Функция iter(), создает итератор
  • Функция len(), количество элементов объекта
  • Класс list(), преобразовывает в список
  • Функция locals(), переменные локальной области
  • Функция map(), обработка последовательности без цикла
  • Функция max(), максимальное значение элемента
  • Класс memoryview(), ссылка на буфер обмена
  • Функция min(), минимальное значение элемента
  • Функция next(), следующий элемент итератора
  • Класс object(), возвращает безликий объект
  • Функция oct(), число в восьмеричную строку
  • Функция open(), открывает файл на чтение/запись
  • Функция ord(), число символа Unicode
  • Функция pow(), возводит число в степень
  • Функция print(), печатает объект
  • Класс property(), метод класса как свойство
  • Класс range(), генерирует арифметические последовательности
  • Функция repr(), описание объекта
  • Функция reversed(), разворачивает последовательность
  • Функция round(), округляет число
  • Класс set(), создает или преобразовывает в множество
  • Функция setattr(), создает атрибут объекта
  • Класс slice(), шаблон среза
  • Функция sorted(), выполняет сортировку
  • Декоратор staticmethod(), метод класса в статический метод
  • Класс str(), преобразует объект в строку
  • Функция sum(), сумма последовательности
  • Функция super(), доступ к унаследованным методам
  • Класс tuple(), создает или преобразует в кортеж
  • Класс type(), возвращает тип объекта
  • Функция vars(), словарь переменных объекта
  • Функция zip(), объединить элементы в список кортежей
  • Функция __import__(), находит и импортирует модуль
  • Функция aiter(), создает асинхронный итератор
  • Функция anext(), следующий элемент асинхронного итератора

float

Числовые литералы, содержащие точку (десятичный разделитель) или знак экспоненты создают тип чисел с плавающей запятой.

 my_float = 1.2 
my_float = float('1.2')

my_float = float('nan') # nan - «не число» (NaN - not-a-number)

my_float = float('inf') # inf - бесконечность
my_float = float('+inf') # inf - бесконечность
my_float = float('-inf') # -inf - минус бесконечность

На заметку

Числа с плавающей запятой обычно реализованы при помощи типа числа двойной точности (double) в Си. Информация о точности и внутреннем представлении чисел с плавающей запятой для конкретной машины доступна из sys.float_info .

Синонимы поиска: float, inf, бесконечность, nan

Что такое float в Python?

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

Синтаксис:

float(x)
  • x : Объект, который нужно преобразовать в число с плавающей точкой. Это может быть целое число, строка, или другой объект, поддерживающий числовое представление.

Пример использования:

# Преобразование целого числа в число с плавающей точкой integer_number = 42 float_number = float(integer_number) print("Число с плавающей точкой:", float_number) # Преобразование строки в число с плавающей точкой number_str = "3.14" float_from_str = float(number_str) print("Число с плавающей точкой из строки:", float_from_str)

Типы чисел с плавающей точкой

Язык Python предоставляет три типа значений с плавающей точкой: встроенные типы float и complex и тип decimal.Decimal в стандартной библиотеке. Все три типа данных относятся к категории неизменяемых. Тип float представляет числа с плавающей точкой двойной точности, диапазон значений которых зависит от компилятора языка C (или C\# или Java), применявшегося для компиляции интерпретатора Python. Числа этого типа имеют ограниченную точность и не могут надежно сравниваться на равенство значений. Числа типа float записываются с десятичной точкой или в экспоненциальной форме записи, например, 0.0 , 4. , 5.7 , -2.5 , -2e9 , 8.9e-4 .

В машинном представлении числа с плавающей точкой хранятся как двоичные числа. Это означает, что одни дробные значения могут быть представлены точно (такие как 0.5 ), а другие – только приблизительно (такие как 0.1 и 0.2 ). Кроме того, для представления используется фиксированное число битов, поэтому существует ограничение на количество цифр в представлении таких чисел. Ниже приводится поясняющий пример:

>>> 0.0, 5.4, -2.5, 8.9e-4 

Проблема потери точности – это не проблема, свойственная только языку Python; все языки программирования обнаруживают проблему с точным представлением чисел с плавающей точкой.

Если действительно необходимо обеспечить высокую точность, можно использовать числа типа decimal.Decimal . Эти числа обеспечивают уровень точности, который вы укажете (по умолчанию 28 знаков после запятой), и могут точно представлять периодические числа, такие как \( 0.1 \) , но скорость работы с такими числами существенно ниже, чем с обычными числами типа float . Вследствие высокой точности числа типа decimal.Decimal прекрасно подходят для производства финансовых вычислений.

Смешанная арифметика поддерживается таким образом, что результатом выражения с участием чисел типов int и float является число типа float , а с участием типов float и complex результатом является число типа complex . Поскольку числа типа decimal.Decimal имеют фиксированную точность, они могут участвовать в выражениях только с другими числами decimal.Decimal и с числами типа int ; результатом таких выражений является число decimal.Decimal . В случае попытки выполнить операцию над несовместимыми типами возбуждается исключение TypeError .

Числа с плавающей точкой

Все числовые операторы и функции, представленные в табл. 1, могут применяться к числам типа float, включая комбинированные операторы присваивания. Тип данных float может вызываться как функция – без аргументов возвращается число 0.0 , с аргументом типа float возвращается копия аргумента, а с аргументом любого другого типа предпринимается попытка выполнить преобразование указанного объекта в тип float. При преобразовании строки аргумент может содержать либо простую форму записи числа с десятичной точкой, либо экспоненциальное представление числа. При выполнении операций с числами типа float может возникнуть ситуация, когда в результате получается значение NaN (not a number – не число) или «бесконечность». К сожалению, поведение интерпретатора в таких ситуациях может отличаться в разных реализациях и зависит от математической библиотеки системы.

Ниже приводится пример простой функции, выполняющей сравнение чисел типа float на равенство в пределах машинной точности:

def equal_float(a, b): return abs(a - b)  sys.float_info.epsilon

Чтобы воспользоваться этой функцией, необходимо импортировать модуль sys . Объект sys.float_info имеет множество атрибутов. Так, sys.float_info.epsilon хранит минимально возможную разницу между двумя числами с плавающей точкой. На одной из 32-разрядных машин автора книги это число чуть больше \( 0.000 000 000 000 000 2 \). Тип float в языке Python обеспечивает надежную точность до 17 значащих цифр.

В дополнение к встроенным функциональным возможностям работы с числами типа float модуль math предоставляет множество функций, которые приводятся в табл. datatype:tbl:4. Ниже приводятся несколько фрагментов программного кода, демонстрирующих, как можно использовать функциональные возможности модуля:

>>> import math >>> math.pi * (5 ** 2) 78.539816339744831 >>> math.hypot(5, 12) 13.0 >>> math.modf(13.732) (0.73199999999999932, 13.0)

Модуль math в значительной степени опирается на математическую библиотеку, с которой был собран интерпретатор Python. Это означает, что при некоторых условиях и в граничных случаях функции модуля могут иметь различное поведение на различных платформах.

Таблица 4. Функции и константы модуля math

Синтаксис Описание
math.acos(x) Возвращает арккосинус x в радианах
math.acosh(x) Возвращает гиперболический арккосинус x в радианах
math.asin(x) Возвращает арксинус x в радианах
math.asinh(x) Возвращает гиперболический арксинус x в радианах
math.atan(x) Возвращает арктангенс x в радианах
math.atan2(y x) Возвращает арктангенс y/x в радианах
math.atanh(x) Возвращает гиперболический арктангенс x в радианах
math.ceil(x) Возвращает $ | x | $, то есть наименьшее целое число типа int , большее и равное x , например, math.ceil(5.4) == 6
math.copysign(x y) Возвращает x со знаком числа y
math.cos(x) Возвращает косинус x в радианах
math.cosh(x) Возвращает гиперболический косинус x в радианах
math.degrees(r) Преобразует число r типа float из радианов в градусы
math.e Константа \( e \), примерно равная значению \( 2.7182818284590451 \)
math.exp(x) Возвращает \( e^x \), то есть math.e ** x
math.fabs(x) Возвращает $ | x | $, то есть абсолютное значение x в виде числа типа float
math.factorial(x) Возвращает \( x! \)
math.floor(x) Возвращает $ | x | $, то есть наименьшее целое число типа int , меньшее и равное x , например, math.floor(5.4) == 5
math.fmod(x y) Выполняет деление по модулю (возвращает остаток) числа x на число y ; дает более точный результат, чем оператор % , применительно к числам типа float
math.frexp(x) Возвращает кортеж из двух элементов с мантиссой (в виде числа типа float ) и экспонентой (в виде числа типа int )
math.fsum(i) Возвращает сумму значений в итерируемом объекте i в виде числа типа float
math.hypot(x y) Возвращает \( \sqrt \)
math.isinf(x) Возвращает True , если значение x типа float является бесконечностью (\( \pm \infty \))
math.isnan(x) Возвращает True , если значение x типа float не является числом
math.ldexp(m e) Возвращает \( m\times 2^e \) – операция обратная math.frexp()
math.log(x b) Возвращает \( \log_b x \), аргумент b является необязательным и по умолчанию имеет значение math.e
math.log10(x) Возвращает \( log_ x \)
math.log1p(x) Возвращает \( log_e (1+x) \); дает точные значения даже когда значение x близко к 0
math.modf(x) Возвращает дробную и целую часть числа x в виде двух значений типа float
math.pi Константа \( \pi \), примерно равная \( 3.1415926535897931 \)
math.pow(x y) Возвращает \( x^y \) в виде числа типа float
math.radians(d) Преобразует число d типа float из градусов в радианы
math.sin(x) Возвращает синус x в радианах
math.sinh(x) Возвращает гиперболический синус x в радианах
math.sqrt(x) Возвращает \( \sqrt \)
math.tan(x) Возвращает тангенс x в радианах
math.tanh(x) Возвращает гиперболический тангенс x в радианах
math.trunc(x) Возвращает целую часть числа x в виде значения типа int ; то же самое что и int(x)

Комплексные числа

Тип данных complex относится к категории неизменяемых и хранит пару значений типа float , одно из которых представляет действительную часть комплексного числа, а другое – мнимую. Литералы комплексных чисел записываются как действительная и мнимая части, объединенные знаком + или — , а за мнимой частью числа следует символ j . Вот примеры нескольких комплексных чисел: 3.5+2j , 0.5j , 4+0j , -1 — 3.7j . Обратите внимание, что если действительная часть числа равна 0 , ее можно вообще опустить.

Отдельные части комплексного числа доступны в виде атрибутов real и imag . Например:

>>> z = -89.5+2.125j >>> z.real, z.imag (-89.5, 2.125)

За исключением // , % , divmod() и версии pow() с тремя аргументами все остальные арифметические операторы и функции, перечисленные в табл. 1 могут использоваться для работы с комплексными числами, так же как и соответствующие комбинированные операторы присваивания. Кроме того, значения типа complex имеют метод conjugate() , который изменяет знак мнимой части. Например:

>>> z.conjugate() (-89.5-2.125j)
>>> 3-4j.conjugate() (3+4j)

Тип данных complex может вызываться как функция – без аргументов она вернет значение 0j , с аргументом типа complex она вернет копию аргумента, а с аргументом любого другого типа она попытается преобразовать указанный объект в значение типа complex . При использовании для преобразования функция complex() принимает либо единственный строковый аргумент, либо одно или два значения типа float .

Если ей передается единственное значение типа float , возвращается комплексное число с мнимой частью, равной 0j .

Функции в модуле math не работают с комплексными числами. Это сделано преднамеренно, чтобы гарантировать, что пользователи модуля math будут получать исключения вместо получения комплексных чисел в некоторых случаях.

Если возникает необходимость использовать комплексные числа, можно воспользоваться модулем cmath , который содержит комплексные версии большинства тригонометрических и логарифмических функций, присутствующих в модуле math, плюс ряд функций, специально предназначенных для работы с комплексными числами, таких как cmath.phase() , cmath.polar() и cmath.rect() , а также константы cmath.pi и cmath.e , которые хранят те же самые значения типа float , что и родственные им константы в модуле math .

Числа типа Decimal

Во многих приложениях недостаток точности, свойственный числам типа float , не имеет существенного значения, и эта неточность окупается скоростью вычислений. Но в некоторых случаях предпочтение отдается точности, даже в обмен на снижение скорости работы. Модуль decimal реализует неизменяемый числовой тип Decimal , который представляет числа с задаваемой точностью. Вычисления с участием таких чисел производятся значительно медленнее, чем в случае использования значений типа float , но насколько это важно, будет зависеть от приложения.

Чтобы создать объект типа Decimal , необходимо импортировать модуль decimal . Например:

>>> import decimal >>> a = decimal.Decimal(9876) >>> b = decimal.Decimal("54321.012345678987654321") >>> a + b Decimal('64197.012345678987654321')

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *