Как из float сделать int python
В операциях с данными могут применяться значения различных типов. Например, складываются число типа int и число типа float :
a = 2 # число int b = 2.5 # число float c = a + b print(c) # 4.5
В данном случае никакой ошибки не будет. Однако Python не всегда может автоматически производить операции, в которых участвуют данные разных типов. Рассмотрим, какие в данном случае действуют правила.
Неявные преобразования
Оба числа в арифметических операциях должны представлять один и тот же тип. Если же два операнда операции представляют разные типы данных, то Python пытается автоматически выполнить преобразования к одному из типов в соответствии со следующми правилами:
- Если один из операндов операции представляет комплексное число (тип complex ), то другой операнд также преобразуется к типу complex.
- Иначе, если один из операндов представляет тип float , то второй операнд также преобразуется к типу float. Собственно так и произошло в примере выше, где значение переменной a было преобразовано в тип float
- Иначе, оба операнда должны представлять тип int , и в этом случае преобазование не требуется
Явные преобразования
Но в некоторых случаях возникает необходимость вручную выполнить преобразование типов. Например, пусть у нас будет следующий код:
a = "2" b = 3 c = a + b
Мы ожидаем, что «2» + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И мы увидим при выполнении кода что-то наподобие:
Traceback (most recent call last): File "/Users/eugene/PycharmProjects/HelloApp/main.py", line 3, in c = a + b TypeError: can only concatenate str (not "int") to str
Для преобразования типов Python предоставляет ряд встроенных функций:
- int() : преобразует значение в целое число
- float() : преобразует значение в число с плавающей точкой
- str() : преобразует значение в строку
int
Так, в предыдущем примере преобазуем строку в число с помощью функции int():
a = "2" b = 3 c = int(a) + b print(c) # 5
Примеры преобразований с помощью int() :
a = int(15) # a = 15 b = int(3.7) # b = 3 c = int("4") # c = 4 e = int(False) # e = 0 f = int(True) # f = 1
Однако если значение не может быть преобразовано, то функция int выдаст ошибку ValueError: invalid literal for int() with base 10 :
b = int("a1c") # Ошибка c = int("4.7") # Ошибка
float
Аналогичным образом действует функция float() , которая преобразует в число с плавающей точкой.
a = "2.7" b = 3 c = float(a) + b print(c) # 5.7
Примеры преобразований с помощью float() :
a = float(15) # a = 15.0 b = float(3.7) # b = 3.7 c = float("4.7") # c = 4.7 d = float("5") # d = 5.0 e = float(False) # e = 0.0 f = float(True) # f = 1.0
Но опять же не все значения могут автоматически преобразованы в float. Так, в следующем случае Python сгенерирует ошибку:
d = float("abc") # Ошибка
str
Функция str() преобразует значение в строку:
a = str(False) # a = "False" b = str(True) # b = "True" c = str(5) # c = "5" d = str(5.7) # d = "5.7"
Функция str() может быть актуальна, например, при добавлении к строке значения другого типа. Например, в следующем случае мы получим ошибку:
age = 22 message = "Age: " + age # Ошибка print(message)
Если число складывается с число, то это стандартная операция сложения чисел. Если строка складывается со строкой, то это операция объединения строк. Но каким образом выполнить операцию сложения по отношение к строке и числу, Python не знает. И если мы в данном случае мы хотим выполнить операцию объединения строк, то число можно привести к строке с помощью функции str() :
age = 22 message = "Age: " + str(age) # Age: 22 print(message)
Преобразование типов данных в Python 3
Типы данных в Python позволяют классифицировать данные, определить значения, которые можно присвоить, и операции, которые можно выполнить с этими данными. В программировании бывает необходимо конвертировать один тип данных в другой, чтобы получить доступ к другим функциям: например, склеить числовые значения со строками или представить целые числа в виде десятичных.
Данное руководство научит вас преобразовывать числа, строки, кортежи и списки.
Читайте также: Типы данных в Python 3
Преобразование числовых типов
В Python существует два числовых типа данных: целые числа и числа с плавающей точкой. Для преобразования целых чисел в числа с плавающей точкой и наоборот Python предоставляет специальные встроенные методы.
Преобразование целых чисел в числа с плавающей точкой
Метод float() преобразовывает целые числа в числа с плавающей точкой. Число указывается в круглых скобках:
Это преобразует число 57 в 57.0.
Также можно использовать переменные. Объявите переменную f = 57, а затем выведите число с плавающей точкой:
f = 57
print(float(f))
57.0
Преобразование чисел с плавающей точкой в целые числа
Встроенная функция int() предназначена для преобразования чисел с плавающей точкой в целые числа.
Функция int() работает так же, как и float(). Чтобы преобразовать число, добавьте его в круглые скобки:
Число 390.8 преобразуется в 390.
Эта функция также может работать с переменными. Объявите переменные:
b = 125.0
c = 390.8
Затем преобразуйте и отобразите их:
print(int(b))
print(int(c))
125
390
Чтобы получить целое число, функция int() отбрасывает знаки после запятой, не округляя их (потому 390.8 не преобразовывается в 391).
Преобразование чисел с помощью деления
При делении Python 3 может преобразовать целое число в число с плавающей точкой (в Python 2 такой функции нет). К примеру, разделив 5 на 2, вы получите 2.5.
Python не преобразовывает тип данных во время деления; следовательно, деля целое число на целое число, в результате вы получили бы целое число, 2.
Преобразование строк
Строка – это последовательность из одного или больше символов (цифр, букв и других символов). Строки – очень распространённый тип данных в программировании. Существует много способов преобразования строк.
Преобразование чисел в строки
Чтобы конвертировать число в строку, используйте метод str(). Поместите число или переменную в круглые скобки.
Попробуйте преобразовать целое число, например:
Запустив метод str(12) в интерактивной оболочке Python (с помощью команды python), вы получите вывод:
Кавычки означают, что теперь 12 является строкой, а не числом.
Особенно полезно преобразовывать числа в строки, используя переменные. К примеру, можно отследить, сколько строк кода в день пишет тот или иной пользователь. Если пользователь пишет больше 50 строк, программа отправит ему поощрительное сообщение.
user = «Michael»
lines = 50
print(«Congratulations, » + user + «! You just wrote » + lines + » lines of code.»)
Запустив этот код, вы получите ошибку:
TypeError: Can’t convert ‘int’ object to str implicitly
Python не может склеивать строки с числами, потому нужно преобразовать значение lines в строку.
user = «Michael»
lines = 50
print(«Congratulations, » + user + «! You just wrote » + str(lines) + » lines of code.»)
Теперь, запустив код, вы увидите:
Congratulations, Michael! You just wrote 50 lines of code.
Метод str() может преобразовать в строку и число с плавающей точкой. Поместите в круглые скобки число или переменную:
print(str(421.034))
f = 5524.53
print(str(f))
421.034
5524.53
Попробуйте выполнить конкатенацию строки и преобразованного в строку числа:
f = 5524.53
print(«Michael has » + str(f) + » points.»)
Michael has 5524.53 points.
Преобразование строк в числа
Строки можно преобразовать в числа с помощью методов int() и float()
Если в строке нет десятичных знаков, лучше преобразовать её в целое число. Для этого используется int().
Попробуйте расширить предыдущий пример кода, который отслеживает количество написанных строк. Пусть программа отслеживает, сколько строк пишет пользователь каждый день.
lines_yesterday = «50»
lines_today = «108»
lines_more = lines_today — lines_yesterday
print(lines_more)
TypeError: unsupported operand type(s) for -: ‘str’ and ‘str’
При запуске возникла ошибка, поскольку Python не может выполнить сложение строк. Преобразуйте строки в числа и попробуйте снова запустить программу:
lines_yesterday = «50»
lines_today = «108»
lines_more = int(lines_today) — int(lines_yesterday)
print(lines_more)
58
Значение переменной lines_more – это число, в данном случае это 58.
Также можно преобразовать числа в предыдущем примере в числа с плавающей точкой. Для этого используйте метод float() вместо int().
К примеру, очки начисляются в десятичных значениях.
total_points = «5524.53»
new_points = «45.30»
new_total_points = total_points + new_points
print(new_total_points)
5524.5345.30
В данном случае оператор + склеивает две строки, а не складывает числа. Потому в результате получилось довольно странное значение.
Конвертируйте эти строки в числа с плавающей точкой, а затем выполните сложение.
total_points = «5524.53»
new_points = «45.30»
new_total_points = float(total_points) + float(new_points)
print(new_total_points)
5569.83
Как видите, теперь программа возвращает ожидаемый результат.
Если вы попробуете преобразовать строку с десятичными значениями в целое число, вы получите ошибку:
f = «54.23»
print(int(f))
ValueError: invalid literal for int() with base 10: ‘54.23’
Преобразование в кортежи и списки
Чтобы преобразовать данные в кортеж или список, используйте методы tuple() и list() соответственно. В Python:
- Список – это изменяемая упорядоченная последовательность элементов, взятая в квадратные скобки ([ ]).
- Кортеж – неизменяемая упорядоченная последовательность элементов, взятая в круглые скобки.
Преобразование списка в кортеж
Преобразовывая список в кортеж, вы можете оптимизировать программу. Для преобразования в кортеж используется метод tuple().
print(tuple([‘pull request’, ‘open source’, ‘repository’, ‘branch’]))
(‘pull request’, ‘open source’, ‘repository’, ‘branch’)
Выведенные на экран данные являются кортежем, а не списком, поскольку они взяты в круглые скобки.
Попробуйте использовать tuple() с переменной:
sea_creatures = [‘shark’, ‘cuttlefish’, ‘squid’, ‘mantis shrimp’] print(tuple(sea_creatures))
(‘shark’, ‘cuttlefish’, ‘squid’, ‘mantis shrimp’)
В кортеж можно преобразовать любой итерируемый тип, включая строки:
Конвертируя в кортеж числовой тип данных, вы получите ошибку:
print(tuple(5000))
TypeError: ‘int’ object is not iterable
Преобразование в списки
Вы можете преобразовать кортеж в список, чтобы сделать его изменяемым.
Обратите внимание: при этом в методах list() и print() используется две пары круглых скобок. Одни принадлежать собственно методу, а другие – кортежу.
print(list((‘blue coral’, ‘staghorn coral’, ‘pillar coral’)))
[‘blue coral’, ‘staghorn coral’, ‘pillar coral’]
Если данные, которые вывел метод print, заключены в квадратные скобки, значит, кортеж преобразовался в список.
Чтобы избежать путаницы с круглыми скобками, можно создать переменную:
coral = (‘blue coral’, ‘staghorn coral’, ‘pillar coral’)
list(coral)
Строки тоже можно преобразовывать в списки:
Заключение
Теперь вы умеете преобразовывать различные типы данных Python с помощью встроенных методов, благодаря чему код вашей программы может стать более гибким.
Как преобразовать числа с плавающей запятой в целые числа в Pandas
Вы можете использовать следующий синтаксис для преобразования столбца в pandas DataFrame из числа с плавающей запятой в целое число:
df['float_column'] = df['float_column'].astype (int)
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: преобразование одного столбца из числа с плавающей запятой в целое число
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view data types for each column df.dtypes player object points float64 assists float64 dtype: object
Мы видим, что столбцы очков и помощи имеют тип данных float.
В следующем коде показано, как преобразовать столбец точек из числа с плавающей запятой в целое число:
#convert 'points' column to integer df['points'] = df['points'].astype (int) #view data types of each column df.dtypes player object points int32 assists float64 dtype: object
Мы видим, что столбец точек теперь является целым числом, а все остальные столбцы остались без изменений.
Пример 2. Преобразование нескольких столбцов в целое число
В следующем коде показано, как преобразовать несколько столбцов в DataFrame из числа с плавающей запятой в целое число:
import pandas as pd #create DataFrame df = pd.DataFrame() #convert 'points' and 'assists' columns to integer df[['points', 'assists']] = df[['points', 'assists']].astype (int) #view data types for each column df.dtypes player object points int32 assists int32 dtype: object
Мы видим, что столбцы баллов и передач были преобразованы из чисел с плавающей запятой в целые числа.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные преобразования в Python:
Как сделать из float число int python3
Проблема такая. Есть, например, две переменные, одна из них float, а другая — int или тоже float. И может получиться такое, что при вычислении одного числа из другого получается целое число, например: 2.62 — 1.62 = 1.0 Как убрать этот ноль и точку в конце числа?
Отслеживать
задан 22 ноя 2020 в 7:15
5 1 1 серебряный знак 3 3 бронзовых знака
Вообще это больше вопрос представления. В чём собственно ваша проблема — непонятно. Вы просите решения, не обозначив реальную проблему.
22 ноя 2020 в 7:45
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
для начала надо разобраться для чего удалять 0
превратить число с плавающей запятой в целое можно функцией int
a = 3.14 b = 2.78 c = int(a - b)
если же выводить на экран без дробной части, то можно использовать функцию format и вообще представление числа с плавающей запятой как .0f
если же хочется превращать число с плавающей запятой в целое, только когда оно целое, то можно сделать так:
c = int(c) if c == float(int(c)) else c