Longsдлинные целые (integers)


В чем разница между типами данных Integer и Long?

18.12.2010, 22:35

В чем разница между Office 2003 и XP
не пойму в чем разница между Office 2003 и XP, в XP макрос работет на 2003 нет. пробую.

В чем разница между файлами *.doc и *.dot
Здравствуйте, есть файл *.doc — работает как нужно, в нём есть много всего, модули, классы модуля.

Объясните, пожалуйста в чем разница между типами-значениями и ссылочными типами?
В чем разница между типами-значениями и ссылочными типами. Привести пример типов-значений и.

В чем разница между разными типами Dictionary?
https://msdn.microsoft.com/ru-ru/library/system.collections.generic(v=vs.120).aspx Три типа.

Visual Studio, в чем разница между разными типами проектов?
ATL CLR MFC Win32 Что это все такое, разница, дайте ссылку на обзор, разбор, объяснение -.

Типы данных. В VBA, как и в любом языке, используются данные элементарных типов: Boolean, Byte, Integer, Long, Single

В VBA, как и в любом языке, используются данные элементарных типов: Boolean, Byte, Integer, Long, Single, Double, Currency, Date, String, Object, Variant, а также данные пользовательского типа User-defined data type (см. таблицу 16.2).

Переменная может принимать значения только одного типа, который указывается при ее описании или предполагается по умолчанию. Тип переменной накладывает ограничения на ее возможные значения и определяет разрешенные операции. Присвоение переменной значения, не соответствующего ее типу, вызывает преобразование значения или может привести к ошибке.

Таблица 16.2. Элементарные типы данных
Тип данных Размер в байтах Разрядность Диапазон значений
Boolean (логическое) True, False
Byte (байт) от 0 до 255
Integer (целое) от –32768 до 32767
Long (длинное целое) от –2147483648 до 2147483647
Single (действительное, одинарная точность) от –3.402823E+38 до –1.401298E-45 и от 1.401298E-45 до 3.402823E+38
Double (действительное, двойная точность) от –1.79769313486232 E+308 до –4.94065645841247E-324 и от 4.94065645841247 E-324 до 1.79769313486232E+308
Currency (фиксированная точка) от –922337203685477.5808 до 922337203685477.5807
Date (дата, время) от 01.01.100 до 31.12.9999
String (символьная строка) 10 байт + 1 байт на символ для строк переменной длины Длина строки для строк фиксированной длины до 65400 символов
Object (объект) Указатель на любой объект
Variant (любое значение) 16 байт для числовых значений См. диапазон значений для Double
22 байта плюс длина строки для символьных значений до 65400 символов
User-defined data type (пользовательскийтип данных) Размер определяется элементами Разрядность и диапазон каждого элемента, входящего в пользова тельский тип, определяется типом данных элемента

Для объявления переменных используются операторы Dim, Private, Public и Static.

Синтаксис оператора Dim:

Dim VariableName [As DataType]

· VariableName – идентификатор переменной;

· DataType – тип данных. Необязательный параметр, по умолчанию – Variant.

Например, Dim p As Integer.

Операторы Private, Public и Static имеют такой же синтаксис, что и оператор Dim.

VBA предусматривает включение в идентификаторы переменных суффиксов, определяющих тип переменной – %, &, !, #, @, $. Например, Dim Name$ определяет переменную Name$ как символьную (стринговую).

Операторы объявления переменных относятся к неисполняемым операторам, т. е. они содержат некоторую информацию для VB, не выполняют никаких действий, могут стоять в любом месте программы, но непременно раньше использования определяемой переменной. Рекомендуется объявлять переменные в начале процедуры или модуля, это улучшает читабельность программы.

Локальные переменные могут быть объявлены неявно (контекстуально). Обычно это происходит, если имя переменной присутствует слева в операторе присваивания или используется в качестве переменной цикла. Переменная, объявленная неявно, всегда имеет тип Variant.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Да какие ж вы математики, если запаролиться нормально не можете. 8427 — | 7330 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Типы данных VBA

Типы данных — это определенные виды данных, которые VBA сохраняет и может манипулировать.

Тип Date

VBA использует тип Date для хранения дат и времени.


При работе с этим типом данных следует иметь ввиду, что VBA-типы Date не являются такими же типами, как в рабочих листах Excel, хотя во многом и схожи с ними. Например, базовой датой для VBA-типа Date является 30 декабря 1899 года, а в Excel — 1 января 1900 года.

VBA-тип Date является типом последовательных дат. VBA использует отрицательные числа для представления дат ранее базовой даты (30 декабря 1899), и положительные — для дат после базовой. Число 0 представляет саму дату 30.12.1899.

В значении последовательной даты целая часть — это общее число дней от базовой даты. Дробная часть (цифра справа от десятичного знака) — эти цифры обозначают время дня как часть дня. Один час — это 1/24 дня, одна минута — 1/1440 дня, секунда — 1/86400 дня.

Можно вычитать одну дату из другой, добавлять к дате или вычитать числа для изменения ее значения. В VBA имеется несколько встроенных процедур для отдельного извлечения года, месяца, дня, часов, минут и секунд переменной типа Date.

Числа

VBA имеет шесть различных численных типов данных: Byte, Integer, Long, Single, Double, Currency.

Они используются для хранения чисел в различных форматах, в зависимости от конкретного типа.

Целые числа

Integer — это целое число без дробной части (целые числа никогда не содержат десятичного знака, даже если десятичная часть равна нулю).

VBA предоставляет три типа целых данных: Byte, Integer, Long.

Byte — наименьший из трех типов целых данных, предназначен для хранения числе от 0 до 255. Этот тип обычно используют для хранения двоичных данных.

Integer использует диапазон целых чисел от -32768 до 32767.

Long использует диапазон целых чисел от -2147483648 до 2147483647.

Byte, Integer, Long типы требуют меньше памяти для хранения чисел, чем другие численные типы данных VBA, а математические операции и операции сравнения над числами указанных типов быстрее, чем эти же операции для численных типов данных с плавающей точкой.

VBA автоматически преобразует данные типов Byte, Integer, Long в текст, когда они выводятся на экран, используя такие процедуры, как MsgBox.

Числа с плавающей точкой

Числа с плавающей точкой могут иметь любое число цифр до или после десятичной точки (в пределах границ конкретного типа данных). Иногда их называют действительными числами. Этот тип данных используют тогда, когда требуется хранить числа, имеющие дробную часть.

VBA имеет два типа данных с плавающей точкой: Single, Double.

Single используется для хранения:
отрицательных чисел от -3,402823*10 38 до -1,401298*10 -45
и положительных от 1,401298*10 -45 до 3,402823*10 38 .
Числа, хранимые с использованием типа Single, называются числами одинарной точности.

Double используется для хранения:
отрицательных чисел от -1,79769313486232*10 308 до -4,94065645841247*10 -324
и положительных от 4,94065645841247*10 -324 до 1,79769313486232*10 308 .
Числа, хранимые с использованием типа Double, называются числами двойной точности.

Следует иметь ввиду, что операции, выполняемые над числами с плавающей точкой, немного медленнее подобных операций над другими численными типами данных. Кроме того, числа, хранимые как типы данных с плавающей точкой, могут быть подвержены ошибкам округления. Если число с плавающей точкой очень большое или очень малое, VBA отображает его в экспоненциальном представлении.

В экспоненциальном представлении значения записываются без начальных и конечных нулей, и слева от десятичного знака имеется только одна цифра. Число умножается на 10 в некоторой степени, чтобы показать, где на самом деле находится десятичный знак. Следует помнить, что отрицательная степень приводит в результате к меньшему числу, а положительная — к большему. Вместо надстрочного символа показателя степени используется буква Е:
4.1Е3=4100
2.01Е-2=0.0201

Тип данных Currency

Это число с фиксированной точкой, т.е., десятичная точка всегда находится в одном и том же месте — справа от точки всегда имеются четыре цифры. Этот тип данных используется при денежных вычислениях, когда требуется высокая точность.

Currency хранит числа в диапазоне от -922337203685477,5808 до 922337203685477,5807.

Текстовые строки

Любые текстовые данные, сохраняемые в VBA, называются строками. Для их хранения предназначен тип данных String.

Строка может содержать текстовые символы любых типов: буквы, цифры, знаки пунктуации, разделительные символы и пр.

Строки всегда заключаются в двойные кавычки.


Существует две категории строк: строки переменной длины и строки фиксированной длины. По умолчанию в VBA все строки переменной длины.

Следует сказать, что тип данных String является очень важным типом, т.к., как правило, информация, вводимая пользователем — это строковые данные. Кроме того, поскольку на экране монитора отображается только текст, то все другие типы данных должны быть преобразованы в строковые данные перед выводом на экран.

Логические значения

VBA-программа принимает то или иное «решение», основываясь на различных условиях. Любое условие может принимать два значения: True (Истина) или False (Ложь). Логические значения True и False называются булевскими значениями, а тип данных — Boolean.

Булевские значения получают как результат операции сравнения. Операции сравнения имеет место при сравнении одного с другим, например, при сравнении двух чисел для определения, которое из них больше.

Тип данных Variant

Это особый тип данных, который может сохранять любые типы, за исключением типа Object. VBA использует этот тип данных для всех переменных, если только они не объявлены явно.

Данные типа Variant принимают характеристики определенного типа, который они сохраняют в данный момент. Например, если данные типа Variant содержат строковые данные, Variant принимает характеристики типа String. VBA использует для данных типа Variant наиболее компактное представление, возможное для конкретных значений, находящихся в данных.

Несмотря на то, что типы Variant удобны и избавляют от некоторой части работы при написании кода, они требуют большего объема памяти, чем любой другой тип данных, за исключением больших строк. Кроме того, математические операции и операции сравнения над данными типа Variant выполняются медленнее, чем подобные операции над данными любого другого типа. Следует избегать использования переменных Variant.

Подведем итог вышесказанному:

Тип данных

Описание и диапазон значения

Хранение положительных чисел от 0 до 255

Хранение логических значений: True, False

Хранение чисел для точных вычислений в диапазоне
от -922337203685477,5808 до 922337203685477,5807

Хранение даты и времени.
Даты от 1.01.100 до 31.12.9999
Время от 00:00:00 до 23:59:59

Хранение чисел двойной точности
от -1,79769313486232*10 308 до -4,94065645841247*10 -324
от 4,94065645841247*10 -324 до 1,79769313486232*10 308

Хранение целых чисел от -32768 до 32767

Хранение целых чисел от -2147483648 до 2147483647

Хранение чисел одинарной точности
от -3,402823*10 38 до -1,401298*10 -45
от 1,401298*10 -45 до 3,402823*10 38

Longs/длинные целые (integers)

Целые имеют неограниченную точность.

Целые литералы (не важно в шестнадцатеричном, восьмеричном или двоичном представлении) создают целый тип.
Создать экземпляр типа также можно при помощи конструктора int() .

Если первый аргумент является строкой, то должен представлять число. Такая строка может содержать знак числа, а также пробельные символы (как ведущие так и заключительные).
Если передано целое, «длинное» целое, либо число с плавающей запятой) будет возвращено целое с тем же значением.
Приведение числа с плавающей запятой к целому усекает его в сторону нуля.

Основание, передаваемое аргументом base, может быть указано только если первый аргумент является строкой, иначе поднимается TypeError.

Python 2
Обычные целые (или просто «целые») реализованы при помощи типа long из Си, что даёт им не менее 32 бит точности ( sys.maxint всегда установлен в максимум для обычных целых на данной платформе; минимальное значение — -sys.maxint — 1 ). «Длинные» — long — целые имеют неограниченную точность (в Python 3 все целые являются «длинными»).

На заметку
Логический Булев тип является подтипом целого.

Типы данных VBA Программирование VBA в СУБД Access 2003

Типы данных VBA


Язык программирования VBA служит для написания кода программы. VBA имеет свой алфавит и синтаксис. Программный код VBA состоит из группы инструкций, записанных с учетом определенного алфавита и синтаксических правил. В алфавит VBA входят: прописные и строчные буквы латинского алфавита, прописные и строчные буквы кириллицы, цифры 0 — 9, символы подчеркивания «_», специальные символы и составные символы.

В исходном тексте программы можно использовать комментарии. Комментарии — это запись в строке после апострофа или ключевого слова REM. Комментарии — это пояснения в исходном тексте программы.

Программы, написанные на языке программирования VBA, оперируют данными определенного типа. Поэтому основными понятиями в VBA, как и других языках программирования являются типы данных. Тип данных определяет область допустимых значений из множества данных, набор операций, которые можно применять к этим значениям, правила выполнения операций и способ хранения (место хранения и объем данных) в памяти компьютера. Типы данных подразделяются на две категории: базовые (встроенные) и пользовательские (собственные). VBA позволяет создавать пользовательские типы данных.

Илон Маск рекомендует:  Тропинка в autolisp

В VBA для представления значений данных используются переменные и константы. Они используются для хранения временных значений и выполнения вычислений в ходе выполнения программы. С одной стороны (с технической точки зрения) переменная — это отдельный именованный участок памяти для хранения данных определенного типа. С другой стороны (в тексте программы) переменная — это ее имя. Другими словами, переменная — это пара, включающая ячейку памяти и сопоставленное ей имя. Переменные – это объекты, которые предназначены для хранения данных. Значение переменной может быть изменено в процессе выполнения программы.

Константа — это также именованный участок памяти для хранения постоянных значений. Константы — это объекты, значения которых остаются постоянными и не могут быть изменены во время выполнения программы. Переменные и константы – это именованные хранилища данных.

Основными видами данных VBA являются константы и переменные. Тип данных указывает, в каком виде данные хранятся в памяти. Переменные предоставляют в программе значения или объекты. Прежде чем использовать переменную ее необходимо объявить (декларировать) с помощью оператора DIM (формат: DIM Имя_Переменной AS Тип_Данных).

Например, DIM MyType AS Integer . Для объявления какой-либо переменной необходимо ввести ключевое слово DIM. Это ключевое слово сообщает VBA, что объявляется переменная и резервируется область памяти для ее хранения. Далее вводим имя той переменной, которую надо объявить — MyType. Затем надо записать ключевое слово AS (как), которое сообщает, что определяется тип данных для переменной MyType. Далее объявим переменную MyType как целое число, и вводим тип данных Integer.

При объявлении констант используется ключевое слово Const. Одновременно с объявлением константы присваивается и ее значение.

К основным типам данных VBA относятся: числовые, символьные (строки), логические, дата и объектные.

Числовой тип данных

В VBA используется шесть различных численных типов данных (самый обширный тип данных): Byte, Integer, Long, Single, Double, Currency.

  • Byte — целые числа (интервалы: 0 — 255, резервируется байт — 1 байт);
  • Integer — целые числа (-32768 — 32767, 2 байта);
  • Long — длинные целые числа (-2.1E9 — 2.1E9, 4 байта).
  • Single — вещественные числа одинарной точности с плавающей точкой (интервалы: -3,402823E38 — -1,401298E-45 и 1,401298E-45 — 3,402823E38, 4 байта);
  • Double — вещественные числа двойной точности с плавающей точкой (-1,79769313486232E308 — -4,94065645841247E-324 и 4,94065645841247E-324 — 1,79769313486232E308, 8 байт).

Типы с фиксированной точкой Currency — числа, имеющие до 15 цифр до десятичной точки и четыре цифры после нее (-922337203685477,5808 — 922337203685477,5807).

Строковый тип данных

  • string фиксированной длины — текстовая информация в интервале от 1 до 65400, резервируется память длиной в 1 строку;
  • string переменной длины — текстовая информация в интервале от 0 до 2 млрд. символов, резервируется память длиной 10 байт + длина строки.

Прочие типы данных

Логический тип Boolean — логические значения (принимает одно из двух логических значений: True — False, 2 байта).

Date — информации о дате и времени (от 1 января 100 года до 31 декабря 9999 года, 8 байт).


Object — ссылка на объект типа формы, отчета или элемента управления (ссылка на объект, 4 байта). Объектные типы данных хранят информацию о каком-либо объекте со всеми свойствами и его возможностями.

Если для переменной, которая используется в процедуре VBA , не объявлен тип данных, то, по умолчанию, будет задан тип данных Variant.

Типы Variant

  • Variant (числа) — числовое значение (любое числовое значение, 16 байт);
  • Variant (символы) — строковое значение (любое символьное значение 22 байта + длина строки).

Далее рассмотрим более подробно область переменных в программах VBA.

Целые типы

В языке Паскаль определено пять целых типов.

Таблица. Целые типы Pascal

Тип Диапазон допустимых значений Отводимая память, в байтах
shortint -128…127 1
integer -32 768…32 767 2
longint -2 147 483 648…2 147 483 647 4
byte 0…255 1
word 0…65 535 2

Переменные целого типа могут принимать только целые значения. Такие переменные в программе описываются следующим образом:

Здесь a, b, c… — имена переменных, integer – тип переменных. Транслятор, встретив такое описание переменных a, b, c, запоминает, что эти переменные могут принимать только целые значения и формирует соответственно этому команды программы.

Таблица. Операции над целыми типами, дающие в результате значение целого типа

Long vs Integer, long vs int, что использовать и когда?

иногда я вижу, что API использует long или Long или int или Integer и я не могу понять, как принимается решение для этого?

когда я должен выбрать что?

6 ответов

Long — Это Object формы long и Integer — это объект в виде int .

на long использует 64 бит. The int использует 32 бита, и поэтому может только держать числа до ±2 миллиарда (-2 31 к +2 31 -1).

вы должны использовать long и int , за исключением случаев, когда вам нужно использовать методы, унаследованные от Object , например hashcode . Java.util.collections методы обычно используют boxed ( Object завернут) версии, потому что они должны работать для любого Object , и примитивный тип, как int или long , не Object .

другое отличие в том, что long и int are pass-by-value, тогда как Long и Integer are pass-by-reference value, как и все непримитивные типы в Java. Поэтому, если бы можно было изменить Long или Integer (это не так, они неизменяемы без использования кода JNI), была бы еще одна причина использовать его другой.

окончательное различие заключается в том, что Long или Integer может быть null .

есть несколько вещей, которые вы не можете сделать с примитивным типом:

  • есть null стоимостью
  • синхронизировать на них
  • используйте их как параметр типа для универсального класса и связанные с этим:
  • передайте их API, который работает с Object s

Если вам не нужен какой-либо из них, вы должны предпочесть примитивные типы, так как они требуют меньше памяти.


  • по умолчанию использовать int , при проведении цифр.
  • если диапазон int слишком мало, используйте long
  • если диапазон long слишком мало, используйте BigInteger
  • Если вам нужно обработать ваши цифры как объект (например, при вводе их в Collection , обращение null , . ) использовать Integer / Long вместо

An int — 32-разрядное целое число; a long — 64-разрядное целое число. Какой из них использовать зависит от того, насколько большие цифры, которые вы планируете работать.

int и long примитивные типы, а Integer и Long объекты. Примитивные типы более эффективны, но иногда вам нужно использовать объекты; например, классы коллекции Java могут работать только с объектами, поэтому, если вам нужен список целых чисел, вы должны сделать его List , например (вы не можете использовать int на List напрямую).

когда дело доходит до использования очень длинного числа, которое может превышать 32 бита для представления, вы можете использовать long, чтобы убедиться, что у вас не будет странного поведения.

из Java 5 Вы можете использовать функции in-boxing и out-boxing, чтобы сделать использование int и Integer полностью одинаковым. Это означает, что вы можете сделать :

бокс in и out позволяет переключаться между int и Integer без какого-либо дополнительного преобразования (то же самое для Long , Double , Short тоже)

вы можете использовать int все время, но Integer содержит некоторые вспомогательные методы, которые могут помочь вам сделать некоторые сложные операции с целыми числами (например, Integer.parseInt(String) )

  • байт, голец .. 1Б .. 8б
  • короткий int .. 2Б .. 16б
  • int .. .. .. .. 4Б .. 32б
  • длинный int .. 8Б .. 64Б
  • короче .. .. 16б
  • int .. .. .. 16в . wtf.
  • долго .. .. 32б
  • долго долго .. 64Б .. бардак! :-/

Как увеличить LARGE_INTEGER

Я пытаюсь увеличить LARGE_INTEGER в C ++, но я получаю следующую ошибку.

Ошибка C2397: преобразование из «LONGLONG» в «DWORD» требует сужающего преобразования

Понятия не имею, что я делаю не так. Это очень простая проблема, я пытался пересобрать проект, но ошибка просто не исчезла.

эти строки — то, что я пробовал, все они дают ту же ошибку.

Решение

Вы можете просто напрямую использовать Quadpart. Обратите внимание, что это целое число длиной 64 бита. также известен как long long и __int64 компилятором MS и gcc. Поскольку это простой старый тип данных, компиляторы поддерживают все арифметические и побитовые операции, выполняемые с ним.

Определение БОЛЬШОГО ИНТЕГЕРА

LARGE_INTEGER является простым объединением C и поэтому не предоставляет никаких конструкторов. Однако вы можете использовать агрегатный инициализатор C, чтобы инициализировать его нулем.

Используя QuadPart, вы можете манипулировать LARGE_INTEGER так же, как любое длинное целое число …

ВАЖНО: MS использует объединение LARGE_INTEGER для передачи таких длинных длинных значений как по историческим причинам, так и для принудительного выравнивания длинных длинных. Некоторые из API Windows будут зависать, если Quadpart не выровнен правильно. Поэтому просто приведение __int64 * к LARGE_INTEGER * при вызовах Windows API не является хорошей практикой.

В 64-битных окнах 64-битное приращение, т.е. li.Quadpart ++, является атомарной операцией.

Другие решения

В качестве проблемы, решаемой @CodyGray в комментариях, я предложил это решение. операция еще атомная, так как atomic_store касается только переменных x а также y являются локальными для потока и метода.


Longs/длинные целые (integers)

long-integer Java — конвертировать человеко-читаемый размер в байты Открыть

long-integer Использование буквы L в длинном объявлении переменной Открыть

long-integer Преобразование IPv6 в длинный и длинный IPv6 Открыть

long-integer Разорвать длинное слово с CSS Открыть

long-integer Чем не равны 2 длинные переменные с оператором == для сравнения в Java? Открыть

long-integer In C# What’s the difference between Int64 and long? Открыть

long-integer Django RQ сделать пакетную вставку БД Открыть

long-integer Правильное использование длинного примитивного типа данных и его массива Открыть

long-integer Почему это выражение Java не приводит окончательное значение к типу long? Открыть

long-integer почему цикл while завершается, когда мы берем input как тип int? Открыть

long-integer Как определить, что длинная переменная равна нулю, или может ли if () содержать исключение в Java? Открыть

long-integer Чтение long из структуры в 32-битной системе (C) Открыть

long-integer Google CodeJam Ванная комната киосков 2020 года, ошибка квалификационного раунда, большой набор данных Открыть

long-integer Как хранить долго в массиве Swift? Открыть

long-integer Тип Python c_ulong составляет 64 бита на MacOS Открыть

long-integer Почему использование long вместо int дает мне другой ответ в цикле for (последовательность Longest Collatz) Открыть

long-integer Java Long Min и Max не точно, как указано в документации Открыть

long-integer Паскаль: как сравнивать большие числа Открыть

long-integer преобразование массива byte [] в unsigned Long Java Открыть

long-integer itertool.islice value error when stop value is greater than sys.maxsize Открыть

long-integer Как сгенерировать случайный long int в C, где каждая цифра ненулевая? Кроме того, случайные числа повторяются Открыть

long-integer Как создать все возможные 64-битные случайные значения в Java? Открыть

long-integer R: Как преобразовать длинное число в строку, чтобы сохранить точность Открыть

long-integer Символьная переменная не печатается правильно при использовании cin и cout Открыть

long-integer Как конвертировать / приводить длинные в String? Открыть

long-integer Как создать UUID типа long (для использования Java-программой) в Python? Открыть

long-integer Как конвертировать Long в Guid и наоборот? Открыть

long-integer Преобразование массива из 8 байтов в долгое время в C ++ Открыть


long-integer Различные размеры (длинные) значения в W7 и Linux Mint Открыть

long-integer Java: Как создать 64-битный массив в Java для хранения больше, чем Integer_max-значение Открыть

5-й час. Оновные типы данных: числовые

Основные типы данных; числовые

Изучая материал предыдущих четырех глав, мы подготовили почву для дальнейшего изучения Python — познакомились с базовыми концепциями объектно-ориентированного программирования и узнали о переменных. Но что мы знаем о том, что может храниться в этих переменных? Вы, вероятно, уже поняли, что переменные могут содержать самую различную полезную информацию, включая значения дат и времени, строки символов и даже целые функции. Но при этом нужно следовать определенным правилам сохранения данных и их интерпретации в Python. Чтобы разобраться в этих правилах, следует иметь представление о типах данных, поддерживаемых в Python. Этой теме как раз и посвящены настоящая и следующая главы. Здесь мы обсудим типы данных, представляющих числовые значения:

  • целое (integer);
  • длинное целое (long integer);
  • число с плавающей запятой (floating point);
  • комплексное число (complex).

Для компьютера наступают трудные времена, когда он не может понять, что именно подразумевал программист в своей программе под той или иной переменной. Компьютеру необходимо четко и ясно знать, сколько места в памяти следует отвести для данной переменной и как обрабатывать ее содержимое. Отнесение переменной к определенному типу данных является тем методом, с помощью которого в программе можно явно указать все эти характеристики. Типы данных — это категории, на которые можно подразделить единицы информации, обрабатываемые программой. Типы данных в Python можно объединить в следующие категории более высокого порядка: числовые данные, последовательности, функции и типы, определяемые пользователем. Типы, определяемые пользователем, будут рассмотрены в части III этой книги. Числовые типы рассматриваются в этой главе, а остальные — в следующей.

Илон Маск рекомендует:  Что такое код ccvs_count

Типы данных в Python (как и в большинстве других языков программирования) делятся на две общие категории еще более высокого порядка: основные (или базовые) и пользовательские (определяемые пользователем). Ко второй категории относятся объекты, с которыми, как уже говорилось, мы познакомимся ближе несколько позже. Объекты — это важнейшая составная часть объектно-ориентированного программирования, хотя различия между объектами и основными типами данных не всегда очевидны, особенно в случае применения функций. Кроме того, не все объекты определяются пользователем.

В этой и следующей главах мы будем оперировать только с основными типами данных, к которым относятся числовой, последовательность и словарь. Функции будут рассмотрены в главе 7, остальные пользовательские типы, или объекты, освещаются в части II. А сейчас займемся числовыми типами данных.

Компьютеры не наделены собственным интеллектом, поэтому программистам в большинстве языков программирования необходимо явно указывать, к какой разновидности чисел относится то или иное значение. Более того, компилируемым языкам эту информацию надо сообщать заранее, т.е. тип переменной должен быть объявлен до инициализации переменной. (Инициализация — это присвоение переменной первого значения.) Попытка присвоить переменной значение, не соответствующее объявленному для нее типу, закончится ошибкой в работе компилятора (чем он вас непременно «порадует»). Например, предположим, что в С вы объявляете переменную следующим образом:

Эта строка подразумевает, что переменная п будет содержать положительные или отрицательные целые числа. Предположим, что где-то в коде своей программы вы попробуете выполнить такое присвоение: n = 3.14159;

Компилятор языка С выразит вам свое недовольство сообщением об ошибке и не позволит выполнить эту операцию. В отличие от С, Python с готовностью позволит вам на ходу изменить тип переменной, причем без единой жалобы. Это объясняется способностью Python динамически определять типы переменных, в то время как в С переменные являются статичными. Другими словами, после объявления в С типа переменной компилятор строго следит за соответствием присваиваемых значений этому типу и не позволяет менять тип во время выполнения программы. В Python же тип переменной определяется в момент присвоения ей значения, поэтому тип переменной можно изменять столько, сколько вашей душе будет угодно. Профессиональный программист скажет, что такое свойство языка относится скорее к его недостаткам, чем к достоинствам. Очень трудно разобраться в коде, если одна и та же переменная в одном блоке содержит дату, а во втором — текст. Python предоставляет программистам множество возможностей, но старайтесь использовать эти возможности на пользу, а не во вред своей программе.

Но если изменения типа переменной в ходе выполнения программы — это не лучшая идея, то почему же тогда такая возможность допускается? В каких случаях выгодно динамическое определение типов? Почему бы не заставить программистов объявлять заранее тип переменной, а затем заставить их строго придерживаться собственных объявлений? В конце концов, это ведь именно то, что делает большинство других современных языков программирования.

Работа Python базируется на предположении, что программист знает, что делает. Статичность типов переменных в других языках — это результат реализации противоположной концепции, заключающейся в том, что программист нуждается в защите непосредственно от самого себя. Динамическое определение типов, если им не злоупотреблять, позволит существенно сократить и упростить код программы. Например, предположим, что вы считываете строки символов, вводимые пользователем. Вы хоти-

те преобразовать эти строковые данные в числа и использовать их в качестве входных данных своей программы. Если пользователю разрешается вводить целые числа, длинные целые и числа с плавающей запятой, то на обычном языке программирования вам пришлось бы для этого предусмотреть по крайней мере три переменные трех разных типов. А в Python вам хватит всего лишь одной переменной, которая может содержать любое значение из трех допустимых типов. И это становится возможным благодаря динамическому определению типов данных в Python.

Мы начнем подробное обсуждение темы с уже знакомого вам типа — целые числа.

Тип целые числа (integer), как следует из его названия, представляет собой весь числовой ряд положительных и отрицательных целых чисел, а также нуль. Как и в других языках программирования, смысл использования данного типа данных состоит в экономии памяти, так как для сохранения целочисленного значения требуется меньше места, чем для значений других числовых типов. Большинство языков, включая Python, реализуют целые числа в виде 32-битовых значений, что ограничивает диапазон допустимых целочисленных значений пределами от -maxint до +maxint. Чтобы оценить допустимый диапазон значений на вашем компьютере, запустите Python в режиме командной строки или воспользуйтесь редактором IDLE, импортируйте модуль sys и попробуйте выполнить ряд операций с числами maxint, как показано в листинге 5.1. На моем компьютере с Linux получились следующие значения (строки, вводимые пользователем, выделены полужирным шрифтом).

Листинг 5.1. Операции с maxint

Python 1.5.2 (10, Apr 13 1999, 10:51:12)

[MSC 32 bit (Intel)] on Win32

Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam

>>> from sys import *

Traceback (innermost last):

В некоторых системах целые числа представляются 64-битовыми значениями, а в системах Cray, насколько я знаю, для целых чисел отводится 128 бит. Тем не менее сообщение об ошибке OverflowError, которое вы видите в приведенном выше примере, все равно появилось бы. Просто диапазон чисел, лежащих между значениями -maxint и +maxint, был бы намного больше. Я никогда не работал на столь мощных машинах, но с помощью другого типа данных Python — long integer (длинное целое) — можно оценить диапазоны целых чисел у таких машин. В листинге 5.2 приведен код программы, который необходимо ввести, сохранить в файле inttest.py и запустить с помощью Python. Кстати, что касается всех листингов кода, представленных в этой книге, то вместо того чтобы набирать их вручную, можно просто выгрузить их со страницы этой книги в Internet.

1: from sys import *

2: z = long ( maxint )

4: print «32-bit machine:»

5: print «maxint:», z, «-maxint:», -z, «(2 ** 31L) -1:», (2 ** 31L) -1


8: print «64-bit machine:»

9: print «maxint:», y, «-maxint:», -y

11: 1Z = (2 ** 127L) — 1

12: Iprint «128-bit machine:»

13: Iprint «maxint:», z, «-maxint:», -z

На рис. 5.1 показан результат выполнения программы inttest.py.

Обратите внимание, что на 32-разрядной машине самым большим целым числом, которое можно использовать, является значение (2 ** 31L) — 1. Это объясняется тем, что один бит используется для указания знака числа — положительного или отрицательного. В большинстве систем он называется старшим двоичным битом, или просто знаковым битом. Причина того, что вы не можете использовать число, которое точно равно значению 2 ** 31L (т.е. 21474836^8), довольно сложна и запутанна, чтобы объяснять ее в данный момент. Она связана со способом представления чисел в двоичной системе. Заинтересованным читателям рекомендую обратиться к разделу «Примеры и упражнения» этой главы, где помещены ссылки на дополнительные материалы. В их числе вы найдете серверы, посвященные исследованиям позиционных числовых систем, где параллельно освещаются и вопросы компьютерного представления чисел. Другие компьютерные языки позволяют хранить целые числа без знака, и такие числа, что очевидно, называются беззнаковыми (unsigned). Беззнаковые числа позволяют использовать все 32 бита, но только для представления положительных целых чисел.

Рис. 5.1. Результат выполнения программы inttest.py

Аналогично, для 64-разрядной машины самым большим целым числом, которое допускается использовать, является значение (2 ** 63) — 1, а для 128-разрядной машины оно составляет (2 ** 127) — 1. В своей работе вы, как правило, не будете достигать граничного значения maxint даже на 32-разрядных машинах. Максимальные значения целых чисел в 64- и 128-разрядном представлениях — это очень большие числа, которые могут понадобиться только для космических исследований или подсчетов числа молекул.

Но если проблема с максимально (минимально) допустимыми значениями у вас все же возникнет, не отчаивайтесь. Длинные целые числа — вот способ, позволяющий обойти эти ограничения в Python, и мы обсудим их в следующем разделе.

Длинные целые числа

Длинные целые числа типа long integer, которые иногда встречаются также под названиями longs или bigints, присутствовали в Python с самого начала. По существу, они ведут себя точно так же, как и обычные целые числа, но только не ограничены никакими пределами. Преобразование целых чисел в длинные целые числа и наоборот, к сожалению, не является достаточно прозрачной процедурой для программистов. Но есть надежда, что Гуидо устранит эти различия в будущих версиях Python. Впрочем, можно попробовать самостоятельно составить алгоритм, который будет автоматически выполнять эти преобразования, если вам это потребуется.

Что подразумевается под словами не ограниченные никакими пределами? В действительности это совсем не означает, что вы можете использовать числа, уходящие в бесконечность. Имеется в виду только то, что обычные ограничения существенно расширяются. К чему это сводится на практике? К тому, что размер любого заданного длинного целого числа подчиняется только фактическим ограничениям, вытекающим из характеристик вашей машины. Например, вы не можете использовать в своей программе такое число, для хранения которого потребуется больший объем памяти, чем ее имеется фактически. Так, на моей домашней машине с системой Server Windows NT 4.0 установлено 256 Мбайт оперативной памяти. В идеале, если пренебречь обязательным расходованием памяти на функционирование операционной системы и самого интерпретатора Python, а также ряда обязательных утилит, самое большое длинное целое число, которое я мог бы теоретически использовать, должно уместиться в эти 256 Мбайт. В результате получилось бы число длиной что-то около 2 013 265 920 цифр. Это довольно приличное значение, но, тем не менее, конечное. Во внутреннем компьютерном представлении длинные целые хранятся как 16-рязрядные числа с максимальным значением 32 768. Поскольку 32 768 — это 2 в 15-й степени, становится очевидным, что 16-й разряд используется для чего-то еще. Этот 16-й бит применяется для реализации «флага переполнения» (т.е. выхода за пределы), который используется для организации операций по переносу, заимствованию и т.п., что во многом напоминает то, как вы поступаете, когда решаете расчетные задачи на бумаге. Чтобы лучше уяснить то, как устроены большие целые числа, попробуйте выполнить упражнения, приведенные в конце этой главы.

Во время работы с длинными числами внимание следует обращать не только на возможности вашего компьютера, но и на терпение пользователей вашей программы. Например, если в вашей программе предполагается вывод на печать числа гуголплекс, то пользователю придется посидеть у своего компьютера лет 5, а то и больше.

С другой стороны, длинные целые числа просто необходимы для выполнения некоторых вычислений. Предположим, что вам нужно преобразовать расстояние в световых годах в километры. С помощью Python это вычисление выполняется очень просто. Вам достаточно только знать, что скорость света (с) приблизительно равна 300 000 км/с. (Более точно значение, а также принципы расчета скорости света представлены на Web-странице по адресу http://ww.ph.uniraelb.edu.au/

nibailes/P140/lecture22/index.htm.) В листинге 5.3 приведена простая процедура определения длины космического светового года в километрах.

2: spy = 60*60*24*365.2422

3: n = long(spy)*long(p)

5: if __name__ == «__main__»:

Хотя вы еще не знакомы с функциями, речь о которых пойдет только в следующей главе, я позволил себе забежать немного вперед и реализовал эту процедуру как вызов функции, в которую в качестве аргумента передается скорость света в вакууме. Если вас не удовлетворяет точность вычислений и вы захотите использовать более точное значение скорости света, достаточно просто изменить аргумент функции с() в строке 6.

Число 365,2422 в листинге 5.3 — это приблизительная длина года, выраженная в днях. Для расчетов дат по григорианскому календарю используется значение длины года 365,2425 дней. (В юлианском календаре использовалось менее точное приближение — 365,25 дней.) Тем не менее, к вашему сведению, астрономы, оперирующие световыми годами, используют в расчетах юлианский год, поскольку в действительности на расстояние, пробегаемое световой волной за год, влияет так много факторов, что^большая точность вычислений будет статистически недостоверной. Астроном Дункан Стил (Duncan Steel) написал короткую заметку, в которой излагает несколько серьезных доводов, обосновывающих предпочтительность использования в вычислениях юлианской длины года. С этой статьей можно познакомиться на Web-странице по адресу http://www.pauahtun.org/TYPython/steel.html.

Запустив на выполнение короткую программу с.ру, получим следующий результат: 9467077800000L

Это, действительно, более 9х10 12 км. Так нам говорили еще в школе, хотя это расстояние трудно себе представить. Использование более точного значения скорости света в вакууме позволит повысить точность вычисления, но порядок и невообрази-мость конечного результата останутся теми же.

Числа с плавающей запятой

В предыдущих главах мы уже встречались с числами с плавающей записей и с экспотенциальным представлением чисел. Надеюсь, вы уже достаточно четко представляете, о чем идет речь. Числа с плавающей запятой (floating point) в Python являются аналогом типа double (числа с двойной точностью) в языке С. Двойная точность подразумевает выделение для их хранения 64 бит памяти. Часть этих битов выполняет служебные функции, поэтому фактически для данного типа самым большим и самым маленьким допустимыми значениями являются (приблизительно) 1.79769е+308 и 2.22507е-308 соответственно, по крайней мере на большинстве компьютеров. Плохо то, что Python не дает вразумительного сообщения об ошибке в случае выхода значения с плавающей запятой за допустимые пределы. Вместо этого получаются довольно странные результаты. Посмотрите, что получится, если назначить переменной максимальное значение числа с плавающей запятой, а именно 1.79769е+308, а затем удвоить его. На своей машине с NT я получил следующий результат: 1. * INF. К счастью, существуют способы заставить Python сообщать вам о возникновении ошибок подобного рода. Мы рассмотрим их в последующих главах.

Илон Маск рекомендует:  transition в CSS

На тех машинах, где допускается резервирование 64 и 128 битов для целых чисел, как правило, для чисел с плавающей запятой также выделяется больше разрядов, что расширяет допустимый диапазон значений. Следует отметить, что в Python выделение памяти для значений основных типов данных происходит в соответствии с особенностями аппаратных средств. Поэтому по мере увеличения производительности машины более мощным становится и сам Python.

Если вас интересуют характеристики собственного компьютера, загрузите из Internet файл http://www.pauahtun.org/TYPython/machar.zip. Это программа на языке С, которая после запуска на выполнение сообщает максимальные и минимальные предельные значения чисел с плавающей запятой. Для систем Linux и DOS программа доступна как исходный код программы, так и выполняемый файл. Для других систем программу нужно скомпилировать самостоятельно.

Комплексные числа, как и длинные целые, были и остаются составной частью Python. Не так уж много найдется языков, которые обеспечивают встроенную поддержку использования комплексных чисел. Еще один язык, который может похвастать этой особенностью, — это FORTRAN. Но данное свойство принесет ощутимую помощь только в том случае, если вы знаете, что представляют собой комплексные числа.

Комплексные числа успешно прижились в электронике, где благодаря их применению с восхитительной простотой описывается поведение сложных электроцепей. Они также весьма эффективны в описании механики небесных тел, в частности для решения систем уравнений, которые помогают астрономам рассчитывать орбиты планет, спутников и астероидов. А не так давно они нашли широкое применение в компьютерной графике, во многом благодаря их популяризации (если допустимо употребить здесь это слово) Беноитом Мандельбротом (Benoit Mandelbrot), сотрудником корпорации IBM, который открыл математическое множество, названное теперь его именем. В последующих главах вы увидите, как можно использовать комплексные числа для рисования наборов Мандельброта (Mandelbrot set).


Чтобы уяснить, что представляют собой комплексные числа, вспомните материал предыдущих глав, в которых целые числа мы рассматривали в виде значений, расположенных на одной линии с нулем в центре, протяженной бесконечно в обоих направлениях, — отрицательном и положительном. (Хотя в действительности в компьютере они не уходят в бесконечность, а ограничены минимальным и максимальным допустимыми значениями.) Вот пример целых чисел: . -3,-2,-1, 0, 1, 2, 3. . Длинные целые числа в Python находятся на той же самой числовой оси, только их пределы дальше отдалены влево и вправо. На этой же числовой оси располагаются и числа с плавающей запятой, только они заполняют ось сплошным рядом. Если каждый отрезок числовой оси, расположенный между двумя смежными целыми числами, разбить на бесконечное множество точек, то это и будут числа с плавающей запятой. Совокупность целых чисел и чисел с плавающей запятой называется вещественные числа.

Когда мы говорим о числах и числовой оси, то фактически подразумеваем элементы четырех числовых систем.

  1. Натуральные, или счетные, числа: 1, 2, 3 и т.д.
  2. Целые числа:-3,-2,-1, 0,1, 2, 3 и т.д.
  3. Рациональные числа: 3/4, 5/8, 1/10 и т.д.
  4. Вещественные числа: 3,14159, 1,001 и т.д., включая иррациональные числа.

Возможно, вы уже слышали об иррациональных числах, среди которых число я является самым известным (отношение диаметра к радиусу окружности). Эти числа могут быть выражены только как отношение двух других чисел (в виде дроби а/Ь). Если попытаться определить их фактическое значение, то мало того, что они не только не дают никакого конечного значения, типа 1,5/0,5 = 3,0, но не получится даже периодической десятичной дроби, такой как 10,0/3,0 = 3,33333333333333. . Вместо этого получается бесконечная дробь без какого бы то ни было намека на подобие закономерности. В научно-фантастическом рассказе «Контакт» писателя Карла Сагана (Carl Sagan — «Contacf») описывается сообщение, скрытое в числе я в районе десятичных разрядов, расположенных где-то за сотней миллиардов знаков после запятой. Если бы это было правдой, мы действительно имели бы послание богов, а не только каких-то там инопланетян. Но любое сообщение — это закономерность, а чередование знаков в числе я — это случайность. Так что поиск подобных посланий противоречит фактам современной математики.

Несмотря на то что данные числа называются иррациональными, они все равно расположены на числовой линии. И, как и в случае с любыми другими числами, количество иррациональных чисел на числовой прямой бесконечно. Числа, которые не являются иррациональными, вполне естественно, называются рациональными.

Существует, однако, еще одна категория чисел, которые вообще невозможно расположить на числовой прямой. Это — мнимые числа. На ранних этапах развития математической науки даже отрицательные числа рассматривались как бессмысленные. Имеются в виду математические представления древних цивилизаций, таких как индейцы Майа. Чтобы представить себе отрицательные числа, нужно было обладать достаточным уровнем абстрактного мышления. Позже, когда появились первые намеки на то, что теперь называется мнимыми числами, математики по инерции были склонны скорее игнорировать собственные же открытия.

Классический пример мнимого числа — квадратный корень из -1. Квадрат некоторого числа по определению является результатом умножения этого числа самого на себя. Тогда само это число называется корнем. Например, 5 является квадратным корнем числа 25. Еще со школы мы помним, что при умножении двух чисел с одинаковым знаком, даже если этот знак отрицательный, результат всегда будет положительным. Следовательно, знак подкоренного числа обязательно должен был положительным. Невозможно извлечь квадратный корень из отрицательного числа. Но тут возникает противоречие. Поскольку отрицательные числа все же существуют и их можно возводить в квадрат, то должна быть возможность и извлекать из них корень. Перед нами возникает та же проблема отрицательных значений, которая стояла перед древними математиками. Очевидно, что они должны существовать, но их невозможно себе представить.

Чтобы использовать мнимые числа, их следует представить в формате комплексных чисел. Современные математики помещают мнимые числа на оси, перпендикулярной числовой оси вещественных чисел. Тогда комплексные числа представляются в виде совокупности вещественного и мнимого компонентов. Комплексные числа подчиняются правилам сложения, вычитания и умножения. Фактически любое^цействие, которое может быть выполнено над вещественными числами, может быть также выполнено и над комплексными числами. Следуя этим правилам, мы можем вычислить квадратный корень из -1. Вещественная часть комплексного числа пишется просто как она есть, а мнимая составляющая представлена числом, за которым следует суффикс — буква / или / Поскольку в Python используется буква j, я также буду применять ее в этой книге. Квадратный корень числа -1 записывается в виде (0, lj). Умножение комплексных чисел выполняется в соответствии со следующим правилом: (a,b)(c,d) = (ac-bd, ad+bc)

Выполним его для числа (0, lj) и получим следующий результат:

Как видим, при отображении результата на числовой плоскости мнимый элемент 0 j пропадает, в результате чего получаем вещественное число -1.

Подобные действия просто выполнять в Python, потому что в него встроена поддержка комплексных чисел. Все, что необходимо сделать в Python, — это определить число как комплексное. В этом нет никаких проблем. Следующий пример демонстрирует, как сообщить Python, что переменная а является комплексным числом:

Возвести в квадрат это комплексное число также просто: s = а * а

Python зорко отследит комплексный характер переменной а и автоматически сделает комплексным результат возведения этого числа в квадрат (переменная s). Выполнение обычных математических операторов над комплексными числами будет давать правильный результат, в чем можно убедиться, если перемножить два комплексных числа. Фактически любое действие, которое можно выполнять над числами с плавающей запятой, может быть применено для комплексных чисел. Правда, для этого нужно импортировать в программу модуль математических функций для обработки комплексных чисел. Вспомните, что в предыдущих главах для получения доступа к математическим функциям, таким как sqrt(), приходилось импортировать модуль math: from math import *

Эта строка указывает Python, что необходимо найти математический модуль math и добавить в код программы все определения функции, которые там есть. В результате вы получаете возможность использовать эти функции в своей программе, как, например, в следующем примере:

Если мы попытаемся выполнить ту же операцию с комплексными числами, то Python выразит свое недовольство, как показано на рис. 5.2.

Рис. 5.2. Функции модуля math

Чтобы использовать математические функции для обработки комплексных чисел, следует импортировать специальный модуль cmath. Синтаксис импортирования модуля остается тот же: from cmath import *

Повторим опять нашу операцию с комплексным числом. В этот раз Python не покажет сообщения об ошибке, а возвратит правильный результат (рис. 5.3).

Рис. 5.3. Модуль математических функций для комплексных чисел

Но может возникнуть другая проблема. Внимательно рассмотрите введенные строки на рис. 5.3. Все функции в модулях math и cmath имеют одинаковые имена. Если последним был импортирован модуль cmath, то все функции чисел с плавающей запятой заменяются их эквивалентами для комплексных чисел. В результате все числа с плавающей запятой будут обрабатываться как комплексные. Но что делать, если необходимо использовать функции из обоих модулей? Этот случай отчетливо подчеркивает одну из опасностей импортирования модулей выражением from module import *. Рано или поздно вы обязательно потеряете что-нибудь из того, что вам необходимо! Решение этой проблемы заключается в том, чтобы использовать идентификаторы, явно указывающие модуль-источник функции. Пример использования идентификаторов показан на рис. 5.4.

Рис. 5.4. Использование идентификаторов модулей функций для комплексных чисел и для чисел с плавающей запятой

Символ (.) является оператором прямого обращения. Он используется для указания модуля, из которого необходимо взять данную функцию. Например, на рис. 5.4 мы попеременно обращались к одноименным функциям sqrt () двух модулей — math и cmath. Оператор прямого обращения (.) используется также для получения доступа к членам классов, о чем мы узнаем в разделе, посвященном объектам.

В данной главе мы обсудили типы данных вообще и числовые типы в частности. Вы познакомились с такими типами, как целые числа, длинные целые числа, числа с плавающей запятой и комплексные числа, а также с подходами их реализации в Python. Вы узнали о комплексных числах и их отношении с вещественными числами, а также об имеющихся функциях для их комплексных чисел. Вы узнали также о том, какие вообще существуют числовые системы, и научились правильно импортировать модули с одноименными функциями. В следующей главе мы рассмотрим оставшиеся типы данных: последовательности и словари.

Вопросы и ответы

Где в реальном мире используются комплексные числа?

Сила электромагнитного поля — вот наиболее яркий пример. Поскольку такое поле имеет электрический и магнитный компоненты, то в качестве единицы измерения этой силы можно использовать комплексное число.

Я выполнил на своем компьютер программу machar. exe и определил, что для представления чисел с плавающей запятой используется только 53 бита из 64. Чем это можно объяснить?

В действительности 53 бита используются только для мантиссы, т.е. дробной части, а еще 11 битов используются для показателя степени. В сумме для представления значения с плавающей запятой используется 64 бита.

    Из каких двух компонентов состоят комплексные числа?

а) Вещественного и не вещественного чисел.

б) Мнимого и кошмарного.

в) Мнимого и вещественного.

г) Ужасного и прекрасного.

а) Натуральные, искусственные, мнимые, рациональные и иррациональные.

б) Натуральные, целые, рациональные, вещественные и комплексные.

в) Ордовикские, силурийские, девонские, юрские и триасовые.

а) В случае использования идентификаторов не произойдет ничего страшного.

б) Если использовать инструкцию import *, функции второго модуля заместят одноименные функции первого.

в) Одноименные функции обоих модулей окажутся недоступными.

г) Окажутся недоступными все функции обоих модулей.

  1. в. Комплексные числа состоят из мнимой и вещественной составляющих.
  2. б. Пять числовых систем: натуральные, целые, рациональные, вещественные и комплексные числа.
  3. а и б. Если импорт модулей выполняется с помощью ключевого слова import без звездочки, то перед именами функций следует указывать имена модулей, что одновременно предотвратит возникновение конфликтов имен. Если импортировать модули с помощью инструкции import *, то функции первого модуля будут замещены одноименными функциями второго модуля. Идентификаторы в этом случае не исправят положения.

Примеры и задания

Для ознакомления с вводным материалом по мнимым, комплексным, рациональным и иррациональным числам, а также по другим близким темам загляните на Web-узел по адресу http://www.math.toronto.edu/mathnet/answers/imaginary.html.

Интересные сведения о календаре индейцев Майа представлены на Web-странице по адресу http://www.foretec.com/Python/workshops/1998-ll/proceedings.html. Здесь же вы узнаете о том, как представляли себе отрицательные числа мудрецы Майя.

Просмотрите еще раз внимательно главу 3, в частности те разделы, где речь идет о представлении чисел с плавающей запятой в Python и о проблемах с точностью арифметических действий с этими значениями.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL