05 Базовые типы данных (Практика)
Создание int
с помощью литерала
Создание float
с помощью литерала (чтобы создать float нужно использовать точку)
Создание boolean
с помощью литерала
float
не всегда имеет точное представление, например
Python отобразит этот литерал как 0.1, но на самом деле это не так. Если вывести 25 знаков после точки, то мы увидем более точное представление числа 0.1
Но некоторые числа имеют конечное представление, например 0,125
При сравнении целых чисел никаких сюрпризов нет
Некоторые float числа тоже сравниваются правильно (с точки зрения 10сс). Потому что число 0.125 имеет конечное представление в 2сс.
Почему 0.1 + 0.1 + 0.1 == 0.3 вернул False?
format(0.1 + 0.1 + 0.1, ".25f") # 0.3000000000000000444089210
format(0.3, ".25f") # 0.2999999999999999888977698
Эти float числа на самом деле не равны,
0.3000000000000000444089210 != 0.2999999999999999888977698
вот почему вернулся False
Для того, чтобы сравнивать float числа, нужно использовать некую допустимую точность. Например, сравнить 2 числа с точностью до 0,001
Сделать это можно так
abs
– функция получения модуля числа