Работа с числами в языке Python

Раздел: Основы Python -> Типы данных

Основные числовые типы в Python

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

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

x = 42
y = 3.14
print(type(x))  # 
print(type(y))  # 

Set str python (множество из строки в python)

Особенности: int неограничен по размеру, float имеет ограниченную точность (обычно 53 бита мантиссы). При выполнении операции, если один операнд float, результат float.

Типичная ошибка: ожидание точного результата для дробей в float. Например, 0.1 + 0.2 не равно 0.3.

print(0.1 + 0.2)  # 0.30000000000000004

Python переменная время (переменные для времени в python)

Решение: использовать модуль decimal или округление с помощью round().

Цели: базовые вычисления, где допустима небольшая погрешность.

Как работать с комплексными числами?

Тип complex представляет комплексные числа (действительная + мнимая части).

z = 3 + 4j
print(z.real, z.imag)  # 3.0 4.0
print(z * z)           # (7+24j)

Python типы данных время (типы данных для времени в python)

Ошибка: забыть суффикс j для мнимой части. Python воспримет 4j как число, а 4i вызовет ошибку.

Случаи: математические и инженерные расчёты, обработка сигналов.

Как получить точные десятичные дроби?

Модуль decimal.Decimal даёт десятичную арифметику с задаваемой точностью.

from decimal import Decimal, getcontext
getcontext().prec = 6
a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)  # 0.3

Python объект тип (тип объекта в python)

Ошибка: передача float в Decimal (например, Decimal(0.1)) приведёт к погрешности. Всегда используйте строку.

Цели: финансовые расчёты, где точность критична.

Как работать с рациональными дробями?

Модуль fractions.Fraction хранит числитель и знаменатель.

from fractions import Fraction
f = Fraction(3, 4)
print(f + Fraction(1, 2))  # 5/4

вещественные значения python (вещественные значения в python)

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

Случаи: точные дробные вычисления, например, в алгоритмах.

Как округлять числа и преобразовывать типы?

Функции int(), float(), round(), math.floor/ceil.

import math
print(int(3.99))        # 3 (отбрасывание дробной части)
print(round(3.14159, 2)) # 3.14
print(math.floor(3.99)) # 3
print(math.ceil(3.01))  # 4

вывести тип данных python (вывод типа данных в python)

Ошибка: round использует банковское округление (к чётному) для .5. Например, round(2.5)=2, round(3.5)=4.

print(round(2.5))  # 2 (неожиданно)

Python двоичные данные (работа с двоичными данными в python)

Решение: использовать Decimal с округлением ROUND_HALF_UP.

Цели: приведение к нужному типу, форматирование вывода.

Как проверять тип числа и сравнивать float?

Функции isinstance, type, math.isclose.

print(isinstance(42, (int, float)))  # True
print(math.isclose(0.1+0.2, 0.3))   # True с допуском

переменная int python какая переменная (переменная int в python - что это?)

Ошибка: сравнение float через == без допуска.

Цели: безопасное сравнение, полиморфизм.

Как использовать битовые операции с целыми?

int поддерживает побитовые операции &, |, ^, <<, >>.

x = 0b1100  # 12
y = 0b1010  # 10
print(x & y)  # 8 (1000)
print(x << 1) # 24 (11000)

Ошибка: применение битовых операций к float вызывает TypeError.

Цели: флаги, работа с двоичными данными.

- длина переменной python (длина числа и переменной в python)
- определение объекта python (определение типа объекта в python)
- определение типа данных python (определение типов данных в python)

Продвинутые примеры работы с числами

Характеристики float через sys.float_info.

Пример
import sys
print(sys.float_info)
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

Бесконечность и NaN.

Пример
inf = float('inf')
nan = float('nan')
print(inf > 1000)   # True
print(nan == nan)   # False
True
False

Модуль math: nextafter, copysign.

Пример
import math
x = 1.0
next_up = math.nextafter(x, float('inf'))
next_down = math.nextafter(x, float('-inf'))
print(next_up, next_down)
1.0000000000000002 0.9999999999999999

Использование Fraction с большими числами.

Пример
from fractions import Fraction
f1 = Fraction(2**100, 3**50)
f2 = Fraction(5, 9)
print(f1 * f2)
5070602400912917605986812821504/717897987691852588770249

Decimal с разной точностью и округлением.

Пример
from decimal import Decimal, getcontext, ROUND_HALF_UP
getcontext().prec = 10
d = Decimal('2.675')
print(d.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP))  # 2.68 (а не 2.67)
2.68

Преобразование строки в число с обработкой ошибок.

Пример
def parse_number(s):
    try:
        return int(s)
    except ValueError:
        try:
            return float(s)
        except ValueError:
            raise ValueError('Не число')
print(parse_number('3.14'))
3.14

Битовые маски и флаги.

Пример
READ = 0b001
WRITE = 0b010
EXECUTE = 0b100
perm = READ | WRITE  # 3
print(perm & READ)  # 1 (True)
1

Использование math.fsum для точной суммы float.

Пример
import math
data = [0.1]*10
print(sum(data))        # 0.9999999999999999
print(math.fsum(data))  # 1.0
0.9999999999999999
1.0

Работа с комплексными числами: полярные координаты.

Пример
import cmath
z = 3 + 4j
r, phi = cmath.polar(z)
print(r, phi)
z1 = cmath.rect(r, phi)
print(z1)
5.0 0.9272952180016122
(3+4j)

Числовые значения в Python - comments

En
числовые значения python (python)