Как преобразовать строку Python в Float и Float в String

Python float () — это встроенная функция, преобразующая String в Float. Функция float () внутренне вызывает функцию указанного объекта __float __ (). Неявное смешивание чисел с плавающей запятой и целых чисел может привести к незначительным ошибкам из-за возможной потери точности при работе с числами с плавающей запятой или к другим результатам для оператора/для чисел с плавающей запятой/целых чисел. В зависимости от контекста может быть предпочтительнее возвращать либо int, либо Float, а не оба сразу.

Почему нам нужно преобразовать String в Float или Int

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

Это означает, что по умолчанию тип данных возвращаемого значения input () — String. Если мы хотим выполнить математические вычисления, такие как умножение, деление, тогда нам придется явно анализировать данные из String в Float или Integer.

См. Следующий код .

 x = input ('Введите значение:') print (type (x)) 

Вывод

 Введите значение: 5  

Вы можете видеть, что даже если у нас есть введено целое число, тип данных — String. Итак, мы должны преобразовать его в уважаемый тип данных; в противном случае он сломает программу и выдаст ValueError.

Преобразовать строку Python в Float

Для синтаксического анализа String в Float в Python, у нас есть два пути.

  1. Python str ()
  2. Python ast.literal_eval ()

Давайте посмотрим на простой пример преобразования строки в float в Python с использованием метода str ().

Пример 1

См. следующий код.

 x = input ('Введите значение:') print (type (x  )) floatVal = float (x) print ('Float Value =', floatVal) print (type (floatVal)) 

Вывод

 Введите значение: 6  Float Value = 6.0  

Пример 2

 stringData = '21 .19114618'floatVal = float (stringData) print ('Float Value =', floatVal) print (type (floatVal)) 

Вывод

 Float Value = 21.19114618  

Как проверить, что элемент конвертируется в f loat или нет.

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

 pton = '1. 1'qton = 11zton = Falsexyz = 'Wubba Lubba Dub Dub'def is_convertible_to_float (значение): try: float (value) return True за исключением: return Falseprint (is_convertible_to_float (pton)) print (is_convertible_to_float (qton)) print (is_convertible_to_float (qton)) print (is_float  )) print (is_convertible_to_float (xyz)) 

Вывод

 TrueTrueTrueFalse 

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

Python ast.literal_eval ()

Функция ast.literal_eval () безопасно оценивает строки, содержащие выражения Python из ненадежных источников, без необходимости анализировать сами значения.

См. Следующий код.

 import astpton  = '1.1'print (ast.literal_eval (pton)) 

Вывод

 python3 app.py1.1 

Этот подход не всегда подходит, потому что для этого есть причина.

Давайте посмотрим на следующий пример.

 import astqton = 11print (  ast.literal_eval (qton)) 

Функция Str () преобразует 11 целых чисел в число с плавающей запятой, но функция ast.literal_eval () выдает здесь ValueError. Запустите программу, и вы получите следующее.

 Traceback (последний вызов последним): файл «app.py», строка 5, в  print (ast.literal_eval (qton)  ) Файл "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ast.py", строка 96, в literal_eval return _convert (node_or_string) File "/Library/Frameworks/Python.framework/Versions/ 3.8/lib/python3.8/ast.py ", строка 95, в _convert return _convert_signed_num (node) File"/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ast.py ", строка  74, в _convert_signed_num return _convert_num (node) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ast.py", строка 66, в _convert_num поднять ValueError ('неверно сформированный узел или строка:'  + repr (node)) ValueError: неверно сформированный узел или строка: 11 

Видите ли, вы получили ValueError: неверно сформированный узел или String: 11.

Это не лучшее решение проблемы.

Python Convert Float to String

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

См. Следующий код.

 # app.pypton = 1.1qton = 1.11zton = 1.111print (f'Concatenation of {pton  } и {qton} - это {str (pton) + str (qton)} ') print (f'Data from {pton}, {qton} and {zton}:  n {str (pton)}, {str (qton)  )}, {str (zton)} ') print (f'Data from {pton}, {qton} and {zton}:  n {"," .join ([str (pton), str (qton), str  (zton)])} ') 

Вывод

 Объединение 1.1 и 1.11 составляет 1.11.11 Данные из 1.1, 1.11 и  1.111: 1.1,1.11,1. 111 Данные из 1.1, 1.11 и 1.111: 1.1, 1.11, 1.111 

Заключение

Функция Python str () может преобразовывать Float в Тип данных String.

Функция Python float () преобразует String в тип данных Float.

См. Также

Преобразование строки Python в целое число

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

Оцените статью
nanomode.ru
Добавить комментарий