Числа с плавающей точкой (тип 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