Вещественный числа.Функции float и round
float()
Ввод числа с плавающей точкой (вещественное число):
round()
Приведение типов между int и float
Математические функции. Работа с модулем math
Чтобы использовать модуль math, его надо импортировать.
import-ы пишутся в самом начале скриптов. Примеры использования:
Представление вещественных чисел в программе
Числа с фиксированной точкой: 4.5
Число с плавающей точкой: 45 * 10
45 - Мантисса
-1 - Порядок (экспонента)
В коде нужно записать так: 45e-1
Это называется экспоненциальная запись вещественных чисел
Машинный эпсилон $ε$
Это предельно маленькое различимое вещественное число.
То есть если $x < ε$ , то $x = 0$.
У питона машинный эпсилон равен $1e-16$
То есть, чтобы сравнить очень маленькие числа, нужно воспользоваться машинным эпсилоном. Потому что, если выполнить такое выражение:
Компьютер имеет ограниченное кол-во памяти для представления чисел. Из этого ограничения вытекает проблема, связанная с хранением некоторых дробных чисел.
Например число $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$
Пример в коде: