Числа 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 соответствуют числам с двойной точностью в С тип
doube
как в отношении диапазона допустимых значений, так и точности. Об ограничениях типа
float
для конкретной платформы, можно узнать из результата функции
sys.float_info
.
Числа с плавающей точкой поддерживают следующие операции:
Тип float
в языке Python представлен классом float()
, он позволяет:
- преобразовать строку с записью целого числа
int
в тип float
- преобразовать строку с записью вещественного числа в тип
float
- преобразовать целые числа типа
int
в вещественные числа типа float
- принимает строки
'nan'
- не число и 'inf'
- положительная или отрицательная бесконечность, это когда число выходит за указанные пределы (OverflowError
)
Класс
float()
не сможет преобразовать к типу
float
числа типа
complex
, т. к. нет однозначного способа преобразования данного типа чисел.
Начиная с 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