Числовые типы данных в Python: Int, Float, Complex

Итак, давайте погрузимся в числовые типы данных Python.

Как мы уже знаем число в Python может иметь тип int (целое число), float (число с плавающей запятой) или даже complex (комплексное число).

Тип данных long в Python 3.x более не поддерживается.

Приступим к изучению этих типов данных.

Числовые типы данных в Python

Число — это арифметическая единица, которая позволяет нам что-то измерять или подсчитывать.

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

Тип данных указывать нет необходимости, так как Python – это язык с динамической типизацией.

Тип данных None означает отсутствие значения.

Тип данных int в Python

Язык Python позволяет хранить целые числа со знаком.

a = 7
a

# Результат:
# 7

Значения данного типа могут быть любой длины, единственным ограничением является размер доступной памяти.

a = 9999999999999999999999999999999999999
a

# Результат:
# 9999999999999999999999999999999999999

В языке Python есть две встроенные функции, при помощи которых можно проверить тип данных replica-rolex-day date-yellow-gold-president.

Функция type()

Данная функция принимает один аргумент и возвращает класс, к которому принадлежит этот аргумент.

a = 9999999999999999999999999999999999999
type(a)

# Результат:
# <class ‘int’>

Функция isinstance()

Эта функция принимает два аргумента. Первая — это некая конструкция Python (например, переменная или список), чью принадлежность к определенному классу мы хотим проверить, а вторая — это собственно сам этот класс.

Она возвращает True или False в зависимости от того, принадлежит ли указанная конструкция к данному классу.

Предположим, мы хотим проверить принадлежит ли переменная a к классу bool. Для этого можно воспользоваться следующим кодом:

isinstance(a, bool)

# Результат:
# False

Так как переменная a содержит значения класса int, функция возвращает значение False.

Экспоненциальное представление числа в Python

Экспоненциальное представление числа можно записать при помощи буквы e, вставив ее между мантиссой числа и показателем степени.

print(2e5)

# Результат:
# 200000.0

Имейте ввиду, что e означает степень 10, то есть данное число имеет вид 2 * 10 ** 5. Напомним, что для возведения в степень в Python используется оператор **.

Тип данных float в Python

В языке Python реализована поддержка чисел с плавающей запятой. Например, тип int не может хранить значение известной математической константы pi, а вот тип float как раз может:

from math import pi

pi

# Результат:
# 3.141592653589793

type(pi)

# Результат:
# <class ‘float’>

Значения данного типа являются точными только до 15 знака после запятой, а дальше происходит округление.

a = 1.1111111111111111119
a

# Результат:
# 1.1111111111111112

Заметим также, что результат деления автоматически получает тип float.

2 / 2

# Результат:
# 1.0

Комплексные числа в Python

Комплексное число состоит из действительной и мнимой части. В Python оно представляется в виде a + bj.

a = 2 + 3j
a

# Результат:
# (2+3j)

Коэффициент при мнимой части комплексного числа

В вышеприведенном примере 2 это действительная часть числа, а 3 его мнимая часть.

Однако, в отличии от математической литературы для выделения мнимой части вы не можете использовать букву i.

a = 2 + 3i

Результат:

SyntaxError: invalid syntax

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

a = 2 + j

Результат:

Traceback (most recent call last):File “<pyshell#33>”, line 1, in <module>

a=2+j

NameError: name ‘j’ is not defined

В данном случае коэффициентом при мнимой части является число 1.

a =2 + 1j
a

# Результат:
# (2+1j)

Операции с комплексными числами

Разумеется, с комплексными числами можно выполнять все основные операции.

a = 2 + 3j
b = 2 + 5j
a + b

# Результат:
# (4+8j)

a *= 2
a

# Результат:
# (4+6j)

Представление чисел в двоичном, восьмеричном и шестнадцатеричном виде в Python

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

Система счисленияПрефикс
двоичная0b или 0B
восьмеричная0o или 0O
шестнадцатеричная0x или 0X

Двоичные числа в Python

Если вы хотите записать двоичное число, используйте префикс 0b или 0B. Например, мы знаем, что двоичное представление для числа 7 равно 111.

print(0b111)

# Результат:
# 7

Также к двоичным числам можно применять функции преобразования.

int(0b10)

# Результат:
# 2

float(0B10)

# Результат:
# 8

Восьмеричные числа в Python

Для восьмеричных чисел в Python используется префикс 0o или 0O.

print(0O10)

# Результат:
# 8

А вот нижеследующий код вызовет ошибку. Дело в том, что в восьмеричной системе счисления цифра 8 не используется. Там используются цифры с 0 до 7.

print(0O8)

Результат:

SyntaxError: invalid token

Шестнадцатеричные числа в Python

Для представления чисел в шестнадцатеричной системе счисления используются цифры от 0 до 9 и буквы латинского алфавита от A до F. Также для данного представления используется префикс 0x или 0X.

print(0xFF)

# Результат:
# 255

print(0xFE)

# Результат:
# 254

Функции преобразования числовых типов в Python

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

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

Функция int()

При помощи функции int() можно преобразовать другой числовой тип в тип int (целые числа).

Также с помощью данной функции можно преобразовывать и нечисловые типы данных в тип int. Но в настоящей статье мы сосредоточимся только на числовых типах данных.

int(7)

# Результат:
# 7

int(7.7)

# Результат:
# 7

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

Однако, комплексные числа преобразовать к целому типу (int) нельзя.

int(2 + 3j)

Результат:

Traceback (most recent call last):File “<pyshell#22>”, line 1, in <module>

int(2+3j)

TypeError: can’t convert complex to int
int(3j)

Результат:

Traceback (most recent call last):File “<pyshell#23>”, line 1, in <module>

int(3j)

TypeError: can’t convert complex to int

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

int(0b10)

# Результат:
# 2

int(0xF)

# Результат:
# 15

Функция float()

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

float(110)

# Результат:
# 110.0

Как и функция int(), функция float() не может преобразовывать комплексные числа.

float(3j)

Результат:

Traceback (most recent call last):File “<pyshell#26>”, line 1, in <module>

float(3j)

TypeError: can’t convert complex to float
float(0o10)

# Результат:
# 8.0

А вот числа в восьмеричном представлении она может принимать.

Функция complex()

Эта функция преобразует числовые типы данных в тип complex.

complex(2)

# Результат:
# (2+0j)

complex(2.3)

# Результат:
# (2.3+0j)

complex(2+3.0j)

# Результат:
# (2+3j)

Функция bin()

Данная функция представляет число в двоичной системе счисления.

bin(2)

# Результат:
# ‘0b10’

Однако данная функция не может принимать в качестве аргументов числа типа float или complex. То же самое относится и к функциям oct() и hex(), которые мы рассмотрим ниже.

bin(2.3)

Результат:

Traceback (most recent call last):File “<pyshell#49>”, line 1, in <module>

bin(2.3)

TypeError: ‘float’ object cannot be interpreted as an integer
bin(2+3j)

Результат:

Traceback (most recent call last):File “<pyshell#50>”, line 1, in <module>

bin(2+3j)

TypeError: ‘complex’ object cannot be interpreted as an integer

Функция oct()

Данная функция возвращает число в восьмеричной системе счисления.

oct(8)

# Результат:
# ‘0o10’

Мы с вами знаем, что 8.0 это тоже самое что и 8, но в Python это не так. Эти числа разных типов данных, float и int соответственно. Таким образом, число 8.0 не может быть преобразовано восьмеричное представление функцией oct().

oct(8.0)

Результат:

Traceback (most recent call last):File “<pyshell#59>”, line 1, in <module>

oct(8.0)

TypeError: ‘float’ object cannot be interpreted as an integer

Функция hex()

Данная функция преобразует число в шестнадцатеричную систему счисления.

hex(255)

# Результат:
# ‘0xff’

hex(0)

# Результат:
# ‘0x0’

Модуль Decimal в Python

Давайте попробуем в Python сложить 1.1 и 2.2, а затем сравнить результат с числом 3.3.

(1.1 + 2.2) == 3.3

# Результат:
# False

Почему же результат False? Давайте выведем на экран результат суммирования.

print(1.1+2.2)

# Результат:
# 3.3000000000000003

Почему же такое происходит? Это не является ошибкой Python, а связано с аппаратными ограничениями при хранении чисел с плавающей запятой (типа float).

Компьютер хранит десятичные дроби в двоичном виде, а точно это делать невозможно.

Рассмотрим еще один пример:

1 / 3

# Результат:
# 0.3333333333333333

Когда мы делим 1 на 3, он возвращает не полное значение, которое является бесконечной дробью 0,33333333333333333(3). Python предлагает решение данной проблемы.

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

import decimal

print(decimal.Decimal(0.1))

# Результат:
# 0.1000000000000000055511151231257827021181583404541015625

Видите, что произошло? Функция Decimal() устанавливает заданную точность и таким образом можно сравнивать числа с плавающей запятой.

Модуль Fraction в Python

В Python есть еще один удобный модуль, предназначенный для работы с рациональными дробями.

Функция Fraction() возвращает значение в виде числителя и знаменателя.

from fractions import Fraction

print(Fraction(1.5))

# Результат:
# 3/2

Эта функция может также принимать и два аргумента.

print(Fraction(1,3))

# Результат:
# 1/3

Модуль Math в Python

Это еще один важный модуль в Python.

В нем реализованы все самые важные математические функции, такие как экспонента, факториал, логарифм и различные тригонометрические функции.

import math

math.factorial(5)

# Результат:
# 120

math.exp(3)

# Результат:
# 20.085536923187668

math.tan(90)

# Результат:
# -1.995200412208242

На этом мы закончим изучение числовых типов данных в данной статье.

Заключение

В данной статье мы узнали о числовых типах данных Python.

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

Затем мы рассмотрели, как преобразовать один числовой тип данных в другой.

 Мы также рассмотрели некоторые важные модули Python — Fraction и Math.

Мы надеемся, что данная статья вам понравилась и принесла пользу.

Перевод статьи Python Numeric Data Types – Int, Float, Complex.

Leave a Comment

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

Scroll to Top