Float: примеры (PYTHON)
float(x): floatОсновы функции float
Функция float() в Python преобразует указанное значение в число с плавающей точкой. Она используется для явного преобразования данных различных типов в вещественные числа.
Сигнатура функции: float([x])
Аргументы:
- x (необязательный) - значение для преобразования. Может быть строкой, целым числом или другим числовым типом. Если аргумент не указан, возвращает 0.0
Возвращаемое значение:
- Число с плавающей точкой типа
float - Если преобразование невозможно, вызывает исключение
ValueError - При передаче нечислового типа без возможности преобразования вызывает
TypeError
Функция поддерживает специальные строковые значения: 'inf', '-inf', 'nan' для представления бесконечности и не-числа.
Базовые примеры использования
Преобразование целых чисел:
num1 = float(10)
num2 = float(-5)10.0 -5.0
Преобразование строк:
num3 = float('3.14')
num4 = float(' -2.5 ')3.14 -2.5
Специальные значения:
inf_val = float('inf')
nan_val = float('nan')
neg_inf = float('-infinity')inf nan -inf
Без аргументов:
default_float = float()0.0
Альтернативные функции Python
int() - преобразует в целое число, отбрасывая дробную часть. Используется когда нужны целочисленные значения.
Decimal() из модуля decimal - обеспечивает точные десятичные вычисления без ошибок округления. Предпочтительнее для финансовых операций.
complex() - создает комплексные числа. Применяется в математических и инженерных расчетах.
eval() - выполняет строку как код Python. Может преобразовывать строки в числа, но менее безопасна.
Аналоги в других языках программирования
JavaScript: parseFloat() и Number()
parseFloat('3.14'); // 3.14
Number('123'); // 123PHP: floatval() и (float)
floatval('3.14'); // 3.14
(float) '42'; // 42.0Java: Double.parseDouble() и Float.parseFloat()
Double.parseDouble('3.14'); // 3.14dC#: Convert.ToDouble() и double.Parse()
Convert.ToDouble('3.14'); // 3.14Golang: strconv.ParseFloat() с возвратом ошибки
strconv.ParseFloat('3.14', 64)В отличие от Python, многие языки требуют явной обработки ошибок преобразования.
Типичные ошибки при использовании
Преобразование неподходящих строк:
float('abc')ValueError: could not convert string to float: 'abc'
Ошибочные разделители:
float('3,14')ValueError: could not convert string to float: '3,14'
Передача неконвертируемых объектов:
float([1, 2, 3])TypeError: float() argument must be a string or a real number, not 'list'
Потеря точности при больших числах:
large_num = float(10**20)
print(large_num)1e+20
Изменения в последних версиях Python
В Python 3.6 добавлена поддержка подчеркиваний в числовых литералах для лучшей читаемости:
float('1_000_000.5')1000000.5
Python 3.8 улучшил производительность преобразования целых чисел в float.
Начиная с Python 3.10, сообщения об ошибках стали более информативными, указывая конкретную причину сбоя преобразования.
В Python 3.11 оптимизирована работа функции для повышения общей производительности интерпретатора.
Расширенные примеры использования
Работа с научной нотацией:
sci1 = float('1.23e-4')
sci2 = float('2.5E6')
print(f'{sci1}, {sci2}')0.000123, 2500000.0
Преобразование логических значений:
bool_true = float(True)
bool_false = float(False)
print(bool_true, bool_false)1.0 0.0
Обработка разных систем счисления через промежуточное преобразование:
hex_str = '0xA.1'
hex_float = float(int(hex_str, 16))
print(hex_float)10.0625
Цепочка преобразований с обработкой ошибок:
def safe_float(value):
try:
return float(value)
except (ValueError, TypeError):
return None
results = [safe_float(x) for x in ['12.5', 'abc', None, '7e2']]
print(results)[12.5, None, None, 700.0]
Использование в математических выражениях:
from math import sqrt
str_numbers = ['4', '9', '16']
square_roots = [sqrt(float(x)) for x in str_numbers]
print(square_roots)[2.0, 3.0, 4.0]
Сравнение с учетом погрешности:
a = float('0.1') + float('0.2')
b = float('0.3')
print(a == b)
print(abs(a - b) < 1e-10)False True