Вещественный числа.Функции float и round

float()

num = 1  # Целое число
num = 1.5  # Вещественное число

Ввод числа с плавающей точкой (вещественное число):

num = float(input('Введите число: '))

round()

rount(win, 2)
# win - Что округляем?
# 2 - Сколько знаков после точки?

Приведение типов между int и float

a = int(3.99)  # целое число 3
b = float(5)  # вещественное число 5.0

Математические функции. Работа с модулем math

Чтобы использовать модуль math, его надо импортировать.
import-ы пишутся в самом начале скриптов. Примеры использования:

a = math.sqrt(b)
a = math.sin(b)
a = math.cos(b)

Представление вещественных чисел в программе

Числа с фиксированной точкой: 4.5

Число с плавающей точкой: 45 * 10

45 - Мантисса
-1 - Порядок (экспонента)

В коде нужно записать так: 45e-1
Это называется экспоненциальная запись вещественных чисел

a = 45e-1
b = 450e-2
c = 0.045e2
d = 4.5e0

Машинный эпсилон $ε$

Это предельно маленькое различимое вещественное число.
То есть если $x < ε$ , то $x = 0$.
У питона машинный эпсилон равен $1e-16$

То есть, чтобы сравнить очень маленькие числа, нужно воспользоваться машинным эпсилоном. Потому что, если выполнить такое выражение:

1.1 + 2.2 == 3.3
False

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

Например число $0.3333…$, в котором тройки можно продолжать до бесконечности, что будет с каждым разом всё более точно представлять итоговое число, не поместится полностью в памяти компьютера.

Для хранения подобных чисел компьютеру придётся использовать ограничение в 16 символов после запятой, то есть наша бесконечная дробь $0.333333333333333333333333…$ будет записана как $0.3333333333333333$.

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

Так, например, вместо сравнения 1.1 + 2.2. == 3.3 можно записать abs(c - d) < 1e-15, что, по сути, значит разность чисел (по модулю) меньше самого маленького доступного числа.

Правильное сравнение:

Если $b < ε$ , то a + $b = a$
Значит
Если $a - b < ε$ , то $a = b$

Пример в коде:

abs(c - d) < 1e-15
# Это как раз операция сравнения
# Если операция истинна, то c и d равны

python