Какие числовые типы данных есть в Python?
Отличный вопрос для начала собеседования. Забавно, но большинство отвечают на него: «float и int». И это хороший, но неполный ответ новичка.
Что же творится с числами в Python на самом деле?
- float - вещественные числа. Точнее они хотят казаться вещественными. Но фиксированное число байт для их хранения не позволяет добиться желаемой точности. float - имеют ограниченную точность для хранения вещественных чисел. Зато умеют быть бесконечностью - float("inf") и даже не числом - float("Nan").
- int - целые числа. В Python они "резиновые". Для хранения целого выделяется столько байт, сколько нужно для его хранения. Никаких big int, long и т.п. в Python нет, потому что обычный int их заменяет.
- bool - логический тип, который в Python частный случай int. Представлен в двух вариантах: True и False. При приведению к int превращаются в 1 и 0 соответственно. Преобразование int -> bool даёт True для любых целых кроме нуля.
- complex - комплексные числа, они же числа с мнимой единицей. Особенностью является то, что в математике мнимая единица записывается как i, а в Python как j. Впрочем, к записям подобным 3+2j быстро привыкаешь.
- decimal - отдельный модуль для хранения вещественных чисел без проблем с точностью. Выделяет столько памяти, сколько нужно для хранения мантиссы и основания. Обязательно заменяет float везде, где важна каждая цифра после запятой: деньги, расчёты с высокой точностью и т.п.
- fraction - дробные числа. Если надо посчитать ⅓+⅘ и вообще работать с дробями, не нужно изобретать велосипед. Модуль отлично справляется с дробной математикой.
Post #94
483

- 👍 7
- 🔥 3
- 🤓 1