В чем разница между integer и float



Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
3. Типы данных
Хотя в Python существует множество типов данных, есть среди них наиболее распространенные. Например, следующие:
- int — этот тип данных состоит из целых чисел.
- float — этот тип используется для работы с десятичными числами.
- str — переменная с типом str (от string — строка) хранит данные в виде текстовых строк.
Где используется
- Данные используются в программирования повсеместно, поэтому важно понимать, с какими именно вы сейчас работаете, и какие последствия это накладывает на процесс взаимодействия. Существует множество типов данных, но только некоторые из них используются каждым программистом.
- int — тип данных для работы с целыми числами, а float — для работы с числами с плавающей точкой. str хранит данные в строковом формате и может включать буквы, символы и цифры. В то же время в int и float использовать символы нельзя — только числа.
- тип bool состоит всего из двух значений: True или False . Важно отметить, что при инициализации или присваивании значения типа bool True или False нужно вводить без кавычек. Строковые же значения наоборот всегда заключены в кавычки.
Рекомендации по работе с типами данных
- Нужно всегда помнить о следующих особенностях типов данных: их форматах, областях применения и возможностях.
- Строковые значения всегда заключены в кавычки, тогда как int , float или bool записываются без них.
Примеры работы с разными типами данных
>>> my_сars_number = 3
>>> my_сars_color = "Бронза, зеленый, черный"
>>> print(my_сars_number)
>>> print(my_сars_color)
3
Бронза, зеленый, черныйВ этом примере были созданы переменные двух типов данных, после чего они были выведены на экран. my_сars_number — это целое число ( int ), а my_сars_color — строка ( str ).
Рассмотрим порядок выполнения этого года:
- В первой строке создается переменная my_сars_number , и ей присваивается значение 3. Это внутренний процесс, поэтому увидеть результат этой операции не выйдет, только если не попробовать вывести значение переменной.
- На второй строке создается еще одна переменная, которой присваивается свое значение.
- На 3 и 4 строках ранее созданные переменные выводятся на экран.
Советы:
А зачем типы данных вообще нужны в Python? Этот вопрос наверняка будет интересовать в первую очередь начинающих программистов.
- Если подумать о внутреннем устройстве компьютера, то память в нем занимается распределением, а центральный процессор отвечает за вычисления. Благодаря типам данных компьютер знает, как распределять память, для чего ее использовать и какие операции выполнять с каким типом данных.
- Отличное сравнение в данном случае — контейнеры для продуктов. Типы данных можно воспринимать как разные контейнеры. В зависимости от типа еды, ее нужно размещать в соответствующих емкостях.
- С другой стороны, если конкретные данные — это целое число, то компьютер может не думать о конвертации их в нижний или верхний регистр, поиске гласных и так далее. Если строка — то здесь уже арифметические операции, поиск квадратного корня, конвертация и прочие команды становятся нерелевантными.
Создадим число с плавающей точкой.
>>> miami_temp_today = 103.40
>>> print(miami_temp_today)
103.4В этом примере создаем число с плавающей точкой и выводим его на экране.
Продвинутые концепции
В Python есть и много других типов данных, например:
- байты;
- комплексные числа;
- булевые значения.
Есть даже и другие значения в других областях: дата, время, GPS-координаты и так далее. В будущем полезно использовать их особенно в крупных проектах. Но пока что остановимся на базовых.
Посмотрим на булевый тип. Это довольно простая концепция, но более сложный тип данных. Основная сложность в том, что мы не сталкиваемся с таким типом в реальном мире, и поэтому порой его сложновато воспринимать. Булевый тип можно воспринимать как переключатель. Он может быть либо включенным, либо выключенным. В Python это либо True , либо False .
Важно запомнить, что значения этого типа не должны быть заключены в кавычки. Это их основное отличие от строк. По сути, True и "True" — это два разных типа данных в Python: булевое и строка.
В более продвинутых примерах булевые типы окажутся очень полезными.
В следующем примере может показаться, что используется строка, но на самом деле это значение булевого типа. Оно может быть либо True , либо False .
What is the difference between the float and integer data type when the size is the same?
So while both are 32 bits wide, their use (and representation) is quite different. You cannot store 3.141 in an integer, but you can in a float .
Dissecting them both a little further:
In an integer, all bits except the leftmost one are used to store the number value. This is (in Java and many computers too) done in the so-called two's complement, which support negatives values. Two's complement uses the leftmost bit to store the positive (0) or negative sign (1). This basically means that you can represent the values of −2 31 to 2 31 − 1.
In a float, those 32 bits are divided between three distinct parts: The sign bit, the exponent and the mantissa. They are laid out as follows:
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM
There is a single bit that determines whether the number is negative or non-negative (zero is neither positive nor negative, but has the sign bit set to zero). Then there are eight bits of an exponent and 23 bits of mantissa. To get a useful number from that, (roughly) the following calculation is performed:
(There is more to it, but this should suffice for the purpose of this discussion)
The mantissa is in essence not much more than a 24-bit integer number. This gets multiplied by 2 to the power of the exponent part, which, roughly, is a number between −128 and 127.
Therefore you can accurately represent all numbers that would fit in a 24-bit integer but the numeric range is also much greater as larger exponents allow for larger values. For example, the maximum value for a float is around 3.4 × 10 38 whereas int only allows values up to 2.1 × 10 9 .
But that also means, since 32 bits only have 4.2 × 10 9 different states (which are all used to represent the values int can store), that at the larger end of float 's numeric range the numbers are spaced wider apart (since there cannot be more unique float numbers than there are unique int numbers). You cannot represent some numbers exactly, then. For example, the number 2 × 10 12 has a representation in float of 1,999,999,991,808. That might be close to 2,000,000,000,000 but it's not exact. Likewise, adding 1 to that number does not change it because 1 is too small to make a difference in the larger scales float is using there.
Similarly, you can also represent very small numbers (between 0 and 1) in a float but regardless of whether the numbers are very large or very small, float only has a precision of around 6 or 7 decimal digits. If you have large numbers those digits are at the start of the number (e.g. 4.51534 × 10 35 , which is nothing more than 451534 follows by 30 zeroes – and float cannot tell anything useful about whether those 30 digits are actually zeroes or something else), for very small numbers (e.g. 3.14159 × 10 −27 ) they are at the far end of the number, way beyond the starting digits of 0.0000.
Числовые типы данных в Python: integer, float
Любые данные хранятся в ячейках памяти компьютера. Когда мы вводим число, оно помещается в какую-либо ячейку памяти. Возникают вопросы: Куда именно? Как впоследствии обращаться к этим данными?
В программе данные связываются с каким-либо именем. В дальнейшем обращение к ним возможно по этому имени-переменной.
Термин «переменная» обозначает, что ее сущность может меняться, она непостоянна.
В программе на языке Python, как и на большинстве других языков, связь между данными и переменными устанавливается с помощью знака = (знак равно). Данная операция называется присваиванием.
Например, выражение, представленное ниже, означает, что на объект, представляющий собой число 4, находящееся в определенной области памяти, теперь ссылается переменная a.
a = 4
Имена переменных могут быть любыми. Однако есть несколько общих правил их написания:
- Желательно давать переменным осмысленные имена, говорящие о назначении данных, на которые они ссылаются.
- Имя переменной не должно совпадать с командами языка (зарезервированными ключевыми словами).
- Имя переменной должно начинаться с буквы или символа подчеркивания, но не с цифры.
- Имя переменной не должно содержать пробелы.
Чтобы узнать значение, на которое ссылается переменная, находясь в режиме интерпретатора, достаточно ее вызвать, то есть написать имя и нажать Enter.
Числовые типы данных
Напишите в консоли следующую команду и нажмите Enter:
>>> 1 + 1
В результате получим следующее:
При программировании мы чаще всего будем сталкиваться с такими числовыми типами данных (формализация информации), как целые числа и числа с плавающей точкой.
Целые числа (тип int) — это положительные и отрицательные целые числа, а также 0, например: 0, -1, 1, 1827 и т.д.
Числа с плавающей точкой (тип float) — это вещественные, числа (рациональные + иррациональные числа), например: 0, -1, 1, 1827, 0.5, -0.76, 3.141592 (число пи) и т.д.
Операции
Операция — это выполнение каких-либо действий над данными (операндами). Действие выполняется оператором (сложение(+), умножение(*) и т.п. ). Результат операции зависит как от оператора, так и от операндов.
Изменение типа переменных
Давайте создадим две переменные A и B, которым присвоим некоторые значения:
>>> A = 10 >>> B = 1.24
В зависимости от введенной информации, Python самостоятельно определяет тип переменно. Чтобы посмотреть типы заданных переменных, воспользуемся функцией type(), для этого введем следующую команду:
>>> type(A)
После ввода на экране появится тип переменной А, в нашем случае это будет целое число, то есть на экране мы увидим следующее:
>>> type(A)
Проведем ту же операцию со второй переменой, на экране увидим следующее:
>>> type(B)
Попробуем сложить переменные разных типов данных и выясним, к какому типу относится полученный результат:
>>> С = A + B >>> type(С)
Как можете заметить, в итоге мы получили переменную float.
Любые математические действия можно выполнять только над одинаковыми типами данных, т.е. либо все float, либо все int и т.д.
Но тогда как мы сейчас смогли это сделать? Python самостоятельно производит перевод переменных в нужный тип данных. Вы можете самостоятельно произвести данный переход с помощью функций int(), float():
>>> type(A) >>> A = float(A) >>> type(A) >>> type(B) >>> B = int(B) >>> type(B) >>> A 10.0 >>> B 1
Как видите, значение B было округлено. Рассмотрим подробнее округление на функции int(), которая переводит вещественное число в целое:
>>> A1 = 0.1 >>> A2 = 0.4 >>> A3 = 0.7 >>> A4 = 1.1 >>> A1 = int(A1) >>> A2 = int(A2) >>> A3 = int(A3) >>> A4 = int(A4) >>> A1 0 >>> A2 0 >>> A3 0 >>> A4 1
Как можно заметить, округление происходит до ближайшего целого числа по направлению в сторону нуля, то есть в меньшую сторону.
Основные математические операции в Python
- Cложение (+) используется для получения суммы (в отношении чисел), было нами рассмотрено выше.
- Вычитание (-) — операция, противоположная сложению.
- Умножение(*) используется для получения произведения сомножителей.
>>> type(2 * 2) >>> type(0.1 * 2) >>> type(0.2 * 5)
- Возведение в степень (**) используется для возведения числа в степень, то есть умножение числа на само себя столько раз, сколько указано в степени.
>>> 2 ** 3 8 >>> 2 ** 4 16
- Деление (/) — действие, обратное умножению, используется для получения частного
>>> 4 / 2 2.0 >>> type(4/2) >>> 2 / 4 0.5
Даже если делимое и делитель являются целыми числами и делитель содержится в делимом целое число раз, то результат деления будет float.
- Целочисленное деление (//) нужно для получения целочисленного результата деления, то есть при данной операции отбрасывается дробная часть числа.
>>> 4 // 2 2 >>> type(4 / 2) >>> 2//4 0 >>> type(2 // 4)
- Получение остатка от деления (%). В результате данной операции Вы получаете то, что осталось от деления, то есть вы получаете то, что невозможно дальше делить. Например, в первом случае 4 делится без остатка — в 4 две 2, во втором случае 2 не разделить на 4, оно сразу уходит в остаток, в третьем случае 7 содержит две 3 (6), в остаток уходит 7 — 6 = 1.
>>> 4 % 2 0 >>> 2 % 4 2 >>> 7 % 3 1
- Модуль числа (abs()) используется для получения модуля числа, то есть отбрасывается знак перед числом
>>> abs(-0.1) 0.1 >>> abs(0) 0 >>> abs(-283) 283 >>> abs(45) 45
- Округление (round()) — данная операция округляет число до ближайшего целого числа, формат int.
>>> round(0.5) 0 >>> round(0.6) 1 >>> round(1.1) 1 >>> round(1.5) 2 >>> round(1.4) 1
Курсы Робикс, в которых изучается этот материал.
- Программирование на Python в Minecraft
- Duckietown робот с системой Автопилота