Перейти к содержимому

Как из float сделать int python

  • автор:

Как из 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 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *