Числа с плавающей точкой в Python: синтаксис и примеры

Раздел: Основы Python -> Типы данных

Основы работы с типом float в Python

Как преобразовать строку или число в число с плавающей точкой?

Самый распространённый способ получить значение типа float - вызвать встроенную функцию float(). Она принимает один аргумент и возвращает вещественное число.

Пример 1: преобразование целого числа.

x = float(5)
print(x)
print(type(x))

вещественные значения python (вещественные значения в python)

5.0
<class 'float'>

вывести тип данных python (вывод типа данных в python)

Пример 2: преобразование строки, содержащей число.

y = float('3.14')
print(y)

Python двоичные данные (работа с двоичными данными в python)

3.14

переменная int python какая переменная (переменная int в python - что это?)

Пример 3: специальные значения.

inf = float('inf')
nan = float('nan')
print(inf, nan)

комплексные числа в python (комплексные числа в python)

inf nan

логические значения python (логические значения в python)

Типичная ошибка: передача строки с недопустимыми символами. Например, float('3,14') вызывает ValueError. Решение: заменить запятую на точку. Также float('abc') вызывает ту же ошибку.

Типичная ошибка: передача None или неподходящего типа (список, словарь) - возникает TypeError.

Как получить float при делении?

Оператор / всегда возвращает float, даже если оба операнда целые.

result = 10 / 3
print(result)
print(type(result))

длина переменной python (длина числа и переменной в python)

3.3333333333333335
<class 'float'>

определение объекта python (определение типа объекта в python)

Типичная ошибка: путаница с целочисленным делением // (возвращает int если оба операнда int). Если нужен вещественный результат, используйте /.

Какие особенности арифметики с float?

Числа с плавающей точкой имеют ограниченную точность из-за двоичного представления. Это приводит к неожиданным результатам.

print(0.1 + 0.2)
print(0.1 + 0.2 == 0.3)

определение типа данных python (определение типов данных в python)

0.30000000000000004
False

Python максимальное целое число (максимальное целое число в python)

Решение для точных финансовых расчётов: использовать модуль decimal (см. следующий вариант).

Типичная ошибка: сравнение на равенство двух float через ==. Лучше использовать math.isclose() или задавать допуск.

Как избежать ошибок округления с float?

Модуль decimal обеспечивает точное десятичное представление с настраиваемой точностью.

from decimal import Decimal, getcontext
getcontext().prec = 4
a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)
print(a + b == Decimal('0.3'))

List values python (список значений словаря в python)

0.3
True

числа с плавающей запятой python (числа с плавающей запятой в python)

Важно: аргумент Decimal должен быть строкой, иначе возможны неожиданности.

Типичная ошибка: передача числа 0.1 напрямую - Decimal(0.1) создаст число с погрешностью. Всегда используйте строки.

Как преобразовать другие типы в float?

Функция float() также работает с булевыми значениями и числами.

print(float(True))   # 1.0
print(float(False))  # 0.0
print(float(10))     # 10.0

является ли числом python (проверка, является ли значение числом в python)

1.0
0.0
10.0

Python пустые значения (пустые значения в python)

Типичная ошибка: попытка преобразовать строку с пробелами - float(' 3.14 ') работает, но float('3.14 kg') вызовет ValueError.

Как правильно сравнивать float?

Из-за погрешностей прямое сравнение на равенство ненадёжно. Используйте math.isclose с допуском.

import math
print(math.isclose(0.1 + 0.2, 0.3))
print(math.isclose(0.1 + 0.2, 0.3, rel_tol=1e-9))

оператор float python (оператор float в python)

True
True

тип данных словарь python (словарь (dict) в python)

Для сравнения с нулём задают abs_tol.

print(math.isclose(0.0, 1e-12, abs_tol=1e-10))

строковые значения python (строковые значения в python)

False

Типичная ошибка: использование == для float. Это может привести к необнаруженным багам.

- S type python (тип s в python)
- Python тип значения в ответе (тип значения в ответе python)
- тип элемента python (тип элемента в python)

Расширенные примеры работы с float в Python:

Пример
# Научная нотация
x = float('1.5e-3')
print(x)  # 0.0015

# Округление с помощью round
price = 19.995
print(round(price, 2))  # 20.0 (банковское округление может дать 19.99)

# Форматирование через f-строки
value = 123.456789
print(f'{value:.2f}')  # 123.46
print(f'{value:.10f}') # 123.4567890000

# Использование math.floor и math.ceil
import math
print(math.floor(3.7))  # 3
print(math.ceil(3.2))   # 4

# Преобразование из строки с научной нотацией
s = '2.99792458e8'
speed_of_light = float(s)
print(speed_of_light)  # 299792458.0

# Float в условных выражениях
if 0.0:
    print('True')
else:
    print('False')  # False, так как 0.0 считается ложным

# Бесконечность и NaN в арифметике
import math
inf = float('inf')
nan = float('nan')
print(inf + 1)    # inf
print(inf - inf)  # nan
print(math.isnan(nan))  # True
print(math.isinf(inf))  # True

# Производительность: float быстрее decimal для больших объёмов
# (но менее точен)

# Ошибка при сравнении с NaN: NaN не равен самому себе
print(nan == nan)  # False

# Использование numpy для массивов float (если установлен)
# import numpy as np
# arr = np.array([1.0, 2.0, 3.0])
# print(arr.dtype)  # float64

Оператор float в Python - comments

En
оператор float python (python)