Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Числа, преобразование типов и математика в Python: полное руководство

Числа, преобразование типов и математика в Python

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

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

Python разделяет числа на три основных типа: int для целых чисел, float для вещественных чисел с дробной частью и complex для чисел с реальной и мнимой частями. Наличие десятичной точки отличает int от float (например, 5 — целое, 5.0 — float). Комплексные числа записываются как x + yj, где x — реальная часть, y — мнимая.

Используйте type() для проверки класса значения и isinstance() для проверки принадлежности к типу. Пример:

a = 5
print(type(a))
print(type(5.0))
c = 5 + 3j
print(c + 3)
print(isinstance(c, complex))

Вывод:

<class 'int'> <class 'float'> (8+3j) True

Целые числа в Python имеют неограниченную точность; float сохраняет около 15 значащих цифр. Для работы с двоичной, шестнадцатеричной и восьмеричной системами Python предоставляет удобные префиксы:

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

Примеры:

# Вывод: 107
print(0b1101011)
# Вывод: 253 (251 + 2)
print(0xFB + 0b10)
# Вывод: 13
print(0o15)

Результат:

107 253 13

Преобразование типов (приведение)

Python автоматически повышает целые к float при арифметике с участием float. Например:

>>> 1 + 2.0
3.0

Явные преобразования так же просты с int(), float() и complex(), которые также парсят строки:

>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)

При преобразовании float в int Python отбрасывает дробную часть, не округляя.

Модуль decimal для точных вычислений

Арифметика с плавающей точкой может давать неожиданные результаты из-за ограничений двоичного представления. Например:

>>> (1.1 + 2.2) == 3.3
False

Числа вроде 0.1 не могут быть точно представлены в двоичной системе, что приводит к небольшим ошибкам округления. Модуль decimal решает это, предоставляя десятичную арифметику с произвольной точностью:

import decimal
print(0.1)
print(decimal.Decimal(0.1))

Вывод:

0.1 0.1000000000000000055511151231257827021181583404541015625

Использование Decimal сохраняет значащие цифры и точное десятичное представление, что критично для финансовых расчётов:

from decimal import Decimal as D
print(D('1.1') + D('2.2'))
print(D('1.2') * D('2.50'))

Вывод:

3.3 3.000

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

Когда использовать Decimal вместо float?

Модуль fractions для рациональных чисел

Модуль fractions поддерживает рациональные числа, позволяя выполнять точную арифметику с числителем и знаменателем как целыми числами:

import fractions
print(fractions.Fraction(1.5))
print(fractions.Fraction(5))
print(fractions.Fraction(1,3))

Вывод:

3/2 5 1/3

Создание Fraction из float может давать неинтуитивные результаты из-за двоичного округления, поэтому для десятичных чисел лучше использовать строки:

import fractions
# Из float
print(fractions.Fraction(1.1))
# Из строки
print(fractions.Fraction('1.1'))

Вывод:

2476979795053773/2251799813685248 11/10

Дробь поддерживает все арифметические операторы:

from fractions import Fraction as F
print(F(1, 3) + F(1, 3))
print(1 / F(5, 6))
print(F(-3, 10) > 0)
print(F(-3, 10) < 0)

Вывод:

2/3 6/5 False True

Математические модули Python

Модуль math предоставляет функции для тригонометрии, логарифмов, факториалов и др.:

import math
print(math.pi)
print(math.cos(math.pi))
print(math.exp(10))
print(math.log10(1000))
print(math.sinh(1))
print(math.factorial(6))

Вывод:

3.141592653589793 -1.0 22026.465794806718 3.0 1.1752011936438014 720

Для случайности и выборки модуль random предлагает:

import random
print(random.randrange(10, 20))
x = ['a', 'b', 'c', 'd', 'e']
print(random.choice(x))
random.shuffle(x)
print(x)
print(random.random())

Пример вывода (значения варьируются):

18 e ['c', 'e', 'd', 'b', 'a'] 0.5682821194654443

Оба модуля имеют подробную документацию со списком всех функций и атрибутов.

Python

  1. Освоение преобразования типов в C#: неявное, явное, Parse и Convert
  2. Ключевые слова и идентификаторы в Python: мастерство зарезервированных слов и соглашений об именовании
  3. Операторы, отступы и комментарии в Python: понятное руководство
  4. Переменные, константы и литералы в Python — подробное руководство
  5. Мастерство преобразования типов в Python: Полное руководство
  6. Мастерство ввода-вывода и импорта модулей в Python: Практическое руководство
  7. Глобальные, локальные и nonlocal переменные в Python: понимание и применение
  8. Управление директориями и файлами в Python: полное руководство
  9. Ошибки и встроенные исключения в Python: полное руководство
  10. Получение текущей даты и времени в Python: практическое руководство