Сообщить об ошибке.

Вещественные числа float в Python

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

Числа с плавающей точкой (тип float), их еще называют вещественными числами - это последовательность десятичных цифр, которая включает десятичную точку ., суффикс экспоненциального/научного представления e или E, за которым следует необязательный знак + или - и одна или несколько цифр. Такой литерал не может начинаться с символа e или E, первым символом может быть любая цифра или точка.

1., 1.0, .1, 0.1, 1e+1, 1.e-3, 1.0e0
# (1.0, 1.0, 0.1, 0.1, 10.0, 0.001, 1.0)

Тип float в Python соответствуют числам с двойной точностью в С тип double как в отношении диапазона допустимых значений, так и точности. Об ограничениях типа float для конкретной платформы, можно узнать из результата функции sys.float_info.

Числа с плавающей точкой поддерживают следующие операции:

Тип float в языке Python представлен классом float(), он позволяет:

  • преобразовать строку с записью целого числа int в тип float
  • преобразовать строку с записью вещественного числа в тип float
  • преобразовать целые числа типа int в вещественные числа типа float
  • принимает строки 'nan' - не число и 'inf' - положительная или отрицательная бесконечность, это когда число выходит за указанные пределы (OverflowError)

Класс float() не сможет преобразовать к типу float числа типа complex, т. к. нет однозначного способа преобразования данного типа чисел.

Также смотрите материал по теме "Проблемы точности и ограничения типа float в Python".

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

>>> 107_020.45, 107_020.000_001, .125_17
 # (107020.45, 107020.000001, 0.12517)

Методы типа float:

float.as_integer_ratio():

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

Новое в Python 3.8

>>> 3.5.as_integer_ratio()
# (7, 2)

float.is_integer():

Метод float.is_integer() возвращает True если дробная часть числа равна 0 и False если нет:

>>> 3.0.is_integer()
# True
>>> 3.5.is_integer()
# False

float.hex():

Метод float.hex() возвращает представление числа в шестнадцатеричной системе счисления:

>>> 3.543212.hex()
# '0x1.c587f88765ba7p+1'

float.fromhex(s):

Метод float.hex() преобразовывает шестнадцатеричную строку s в число типа float:

>>> float.fromhex(''0x1.9e00000000000p+6'')
# 103.5
>>> float.fromhex('   0x1.c587f88765ba7p+1    ')
# 3.543212
>>> float.fromhex('   0x0.1p+3')
# 0.5

Примеры использования преобразования объектов к типу float:

# Преобразование типа int к типу float
>>> float(10)
# 10.0

# Преобразование строки с записью числа в тип `float`
>>> float(' -15  ')
# -15.0
>>> float(' -15_125')
# -15125.0
>>> float('  -3.500 ')
# -3.5
>>> float('.500  ')
# 0.5
>>> float(' -1e-1')
# -0.1
>>> float('  1.e-5 ')
# 1e-05
>>> float('  1.5e7 ')
# 15000000.0
>>> float('  3.5657e+3 ')
# 3565.7
>>> float('nan')
# nan
>>> float('-inf')
# -inf