Вещественный числа.Функции float и round
float()
Ввод числа с плавающей точкой (вещественное число):
round()
Приведение типов между int и float
Математические функции. Работа с модулем math
Чтобы использовать модуль math, его надо импортировать.
import-ы пишутся в самом начале скриптов. Примеры использования:
Представление вещественных чисел в программе
Числа с фиксированной точкой: 4.5
Число с плавающей точкой: 45 * 10
45 - Мантисса
-1 - Порядок (экспонента)
В коде нужно записать так: 45e-1
Это называется экспоненциальная запись вещественных чисел
Машинный эпсилон
Это предельно маленькое различимое вещественное число.
То есть если , то .
У питона машинный эпсилон равен
То есть, чтобы сравнить очень маленькие числа, нужно воспользоваться машинным эпсилоном. Потому что, если выполнить такое выражение:
Компьютер имеет ограниченное кол-во памяти для представления чисел. Из этого ограничения вытекает проблема, связанная с хранением некоторых дробных чисел.
Например число , в котором тройки можно продолжать до бесконечности, что будет с каждым разом всё более точно представлять итоговое число, не поместится полностью в памяти компьютера.
Для хранения подобных чисел компьютеру придётся использовать ограничение в 16 символов после запятой, то есть наша бесконечная дробь будет записана как .
То есть в итоге число в компьютере не будет обладать максимальной точностью. Подобные неточности могут приводить к необычным результатам при работе с вещественными числами, поэтому в операциях с вещественными числами приходится прибегать к хитростям:
Так, например, вместо сравнения 1.1 + 2.2. == 3.3
можно записать abs(c - d) < 1e-15
, что, по сути, значит разность чисел (по модулю) меньше самого маленького доступного числа.
Правильное сравнение:
Если , то a +
Значит
Если , то
Пример в коде: