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

В Python есть различные функции преобразования типов, которые напрямую меняют один тип данных на другой. В этой статье мы расскажем о том, как преобразовать строку в число с плавающей запятой.

Зачем вообще може понадобиться такое преобразование? В Python, когда входные данные получаются в результате чтения или записи файла или выполнения какой-либо другой операции с файлом, ввод мы получаем в виде строковой переменной. Даже если мы запрашивали число с плавающей запятой, метод input() получает входные данные в виде строки. Поэтому для дальнейшей работы с нужными нам числами придется сначала привести string к float.

Использование метода float()

Чтобы преобразовать строку в число с плавающей запятой, в Python используется функция float(). Эта функция принимает только один параметр — строку или целое число. Если аргументы не переданы, метод возвращает 0.0.

Если входная строка имеет аргументы за пределами диапазона чисел с плавающей запятой, вы получите ошибку OverflowError.

Для реализации следующих скриптов на Python установите сам Python, а также подходящую IDE (Pycharm, Jupiter, Spyder и т.д.). Создайте новый файл, вставьте туда код и запустите его.

string = '3.4567'
number = float(string)
print('Float Value is', number)

# Output:
# Float Value is 3.4567

В данном примере мы берем строку «3.4576». Мы конвертируем ее, передавая в функцию float(). Дальше строка преобразуется в число с плавающей запятой и возвращается нам.

python logo

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

×

Как преобразовать строку в число с плавающей запятой, если в строке есть лишние запятые

В следующем примере мы работаем со строкой «3,2.759». В данной строке есть число, разделенное запятой и точкой.

Важно отметить, что в Python десятичная часть отделяется с помощью точки. И в данном случае запятая – это просто лишний символ, который добавляет нам трудностей при переводе числа из строкового типа в вещественный.

Преобразовать такую строку в число с плавающей запятой сложнее. Вызов функции float() напрямую приведет нас к ошибке. Поэтому, прежде чем вызвать функцию float(), нам нужно избавиться от лишней запятой в строке.

Запятую мы удалим из строки с помощью функции replace(), заменив ее на пустую строку.

string = '3,2.759'
number = float(string.replace(',', ''))
print('Float Value is', number)

# Output:
# Float Value is 32.759

После удаления запятой из строки значение нашей строки будет «32.759». Далее мы можем применить метод float(), чтобы получить число вещественного типа.

Преобразование списка строк

Допустим, у нас есть список, содержащий числа в строковом формате. Чтобы преобразовать все эти элементы в числа с плавающей запятой, мы перебираем список в цикле for. Каждый элемент мы преобразуем из строкового в вещественный. Делается это при помощи функции float().

str = ['12.23', '45.78', '69.34', '38.65']
number = []
for item in str:
    number.append(float(item))
print(number)

# Output:
# [12.23, 45.78, 69.34, 38.65]

В данном примере у нас есть список ['12.23', '45.78', '69.34', '38.65']. Мы создаем пустой список number, куда добавим наши числа в формате float. Далее мы используем цикл for для добавления каждого элемента из исходного списка в список number. При этом перед добавлением мы передаем в функцию float() каждый элемент, чтобы преобразовать его из строки в число с плавающей запятой.

В итоге мы получим новый список number, состоящий из исходных элементов, но только теперь это уже не строки, а числа с плавающей запятой.

Задание определенной точности

Иногда нам нужно указать количество знаков после запятой в числе. В такой ситуации мы используем все ту же функцию float(), а после нее — функцию format(), чтобы определить количество десятичных знаков в нашем числе.

В данном примере мы работаем со строкой «6.759104». Нам нужно преобразовать эту строку в число с плавающей запятой и оставить только 4 цифры после запятой.

str = '6.759104'
number = float(str)
result = '{:.4f}'.format(number)
print(result)

# Output:
# 6.7591

Здесь метод format() используется для определения количества десятичных знаков в числе с плавающей запятой. В данном случае в исходном числе после запятой больше знаков, чем четыре, поэтому происходит округление. Однако если бы вдруг знаков оказалось меньше, то в конец просто бы добавились нули.

Таким образом, после применения функции format() мы получим 6.7591.

Заключение

В Python бывают такие случаи, когда для выполнения требуемой операции необходимо заменить один тип данных на другой. Метод input() в Python возвращает нам объект типа string, поэтому для выполнения различных операций с пользовательскими данными необходимо приводить полученные строки к нужному типу. В этой статье мы рассмотрели приведение строк к типу float.

Важно отметить, что для приведения к типу float с помощью функции float() строка должна иметь значение с точкой. То есть преобразовать буквы в число с плавающей запятой не получится. Если попытаетесь, получите ValueError. Если элемент находится за пределами диапазона плавающей переменной, в выводе отображается ошибка OverflowError. Если функции float() не передан аргумент, возвращается 0.0.

Надеемся, данная статья была для вас полезна. Успехов в написании кода!

Перевод статьи «Python String to Float».

python logo

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

×