Real — Тип Delphi
Программа, представленная в виде инструкций языка программирования, называется исходной программой. Она состоит из инструкций, понятных человеку, но не понятных процессору компьютера. Чтобы процессор смог выполнить работу в соответствии с инструкциями исходной программы, исходная программа должна быть переведена на машинный язык — язык команд процессора. Задачу преобразования исходной программы в машинный код выполняет специальная программа — компилятор.
Компилятор, схема работы которого приведена на рис. 1.4, выполняет последовательно две задачи:
1. Проверяет текст исходной программы на отсутствие синтаксических ошибок.
2. Создает (генерирует) исполняемую программу — машинный код.
Рис. 1.4. Схема работы компилятора
Следует отметить, что генерация исполняемой программы происходит только в том случае, если в тексте исходной программы нет синтаксических ошибок.
Генерация машинного кода компилятором свидетельствует лишь о том, что в тексте программы нет синтаксических ошибок. Убедиться, что программа работает правильно можно только в процессе ее тестирования — пробных запусках программы и анализе полученных результатов. Например, если в программе вычисления корней квадратного уравнения допущена ошибка в выражении (формуле) вычисления дискриминанта, то, даже если это выражение будет синтаксически верно, программа выдаст неверные значения корней.
В среде программирования Delphi для записи программ используется язык программирования Delphi. Программа на Delphi представляет собой последовательность инструкций, которые довольно часто называют операторами. Одна инструкция от другой отделяется точкой с запятой.
Каждая инструкция состоит из идентификаторов. Идентификатор может обозначать:
- Инструкцию языка (:=, if, while, for);
- переменную;
- константу (целое или дробное число);
- арифметическую (+, -,*,/) или логическую (and, or, not) операцию;
- подпрограмму (процедуру или функцию);
- отмечать начало (procedure, function) или конец (end) подпрограммы ИЛИ блока (begin, end).
Программа может оперировать данными различных типов: целыми и дробными числами, символами, строками символов, логическими величинами.
Язык Delphi поддерживает семь целых типов данных: shortint, smailint, Longint, Int64, Byte, word и Longword, описание которых приведено в табл. 1.1.
Таблица 1.1. Целые типы
-2 147 483 648 — 2 147 483 647
8 битов, беззнаковый
16 битов, беззнаковый
0 — 4 294 967 295
32 бита, беззнаковый
Object Pascal поддерживает и наиболее универсальный целый тип — Integer, который Эквивалентен Longint.
Язык Delphi поддерживает шесть вещественных типов: Reai48, single, Double, Extended, comp, Currency. Типы различаются между собой диапазо-ном допустимых значений, количеством значащих цифр и количеством байтов, необходимых для хранения данных в памяти компьютера (табл. 1.2).
Таблица 1.2. Вещественные (дробные) типы
2.9x 10 -39 -1.7×10 38
1.5 x 10 -45 -3.4х 10 38
5.0×10- 324 -1.7×10 308
3.6×10- 4951 -1.1 х10 4932
-922 337 203 685 477.5808 —922 337 203 685 477.5807
Язык Delphi поддерживает и наиболее универсальный вещественный тип — Real, который эквивалентен Double.
Язык Delphi поддерживает два символьных типа: Ansichar и Widechar:
- тип Ansichar — это символы в кодировке ANSI, которым соответствуют числа в диапазоне от 0 до 255;
- тип widechar — это символы в кодировке Unicode, им соответствуют числа от 0 до 65 535.
Object Pascal поддерживает и наиболее универсальный символьный тип — Char, который эквивалентен Ansichar.
Язык Delphi поддерживает три строковых типа: shortstring, Longstring, WideString:
- тип shortstring представляет собой статически размещаемые в памяти компьютера строки длиной от 0 до 255 символов;
- тип Longstring представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти;
- тип WideString представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти. Каждый символ строки типа WideString является Unicode-символом.
В языке Delphi для обозначения строкового типа допускается использование идентификатора string. Тип string эквивалентен типу shortstring.
Логическая величина может принимать одно из двух значений True (истина) или False (ложь). В языке Delphi логические величины относят к типу Boolean.
Переменная — это область памяти, в которой находятся данные, которыми оперирует программа. Когда программа манипулирует с данными, она, фактически, оперирует содержимым ячеек памяти, т. е. переменными.
Чтобы программа могла обратиться к переменной (области памяти), например, для того, чтобы получить исходные данные для расчета по формуле или сохранить результат, переменная должна иметь имя. Имя переменной придумывает программист.
В качестве имени переменной можно использовать последовательность из букв латинского алфавита, цифр и некоторых специальных символов. Первым символом в имени переменной должна быть буква. Пробел в имени переменной использовать нельзя.
Следует обратить внимание на то, что компилятор языка Delphi не различает прописные и строчные буквы в именах переменных, поэтому имена SUMMA, Summa и summa обозначают одну и ту же переменную.
Желательно, чтобы имя переменной было логически связано с ее назначением. Например, переменным, предназначенным для хранения коэффициентов и корней квадратного уравнения, которое в общем виде традиционно записывают
вполне логично присвоить имена а, b, с, x1 и х2. Другой пример. Если в программе есть переменные, предназначенные для хранения суммы покупки и величины скидки, то этим переменным можно присвоить имена
TotalSumm и Discount или ObSumma и Skidka.
В языке Delphi каждая переменная перед использованием должна быть объявлена. С помощью объявления устанавливается не только факт существования переменной, но и задается ее тип, чем указывается и диапазон допустимых значений.
В общем виде инструкция объявления переменной выглядит так:
- имя — имя переменной;
- тип — тип данных, для хранения которых предназначена переменная.
а : Real; b : Real; i : Integer;
В приведенных примерах объявлены две переменные типа real и одна переменная типа integer.
В тексте программы объявление каждой переменной, как правило, помещают на отдельной строке.
Если в программе имеется несколько переменных, относящихся к одному типу, то имена этих переменных можно перечислить в одной строке через запятую, а тип переменных указать после имени последней переменной через двоеточие, например:
а,b,с : Real; x1,x2 : Real;
В языке Delphi существует два вида констант: обычные и именованные.
Обычная константа — это целое или дробное число, строка символов или отдельный символ, логическое значение.
Real — Тип Delphi
Продолжаем наше обучение! В Delphi очень важную роль играют переменные. В процессе работы программы в переменных можно как хранить так и извлекать информацию. Переменные могут иметь разный тип. Например для того, чтобы в переменную записать какой-нибудь текст используется тип String. Для того, что бы записать в переменную число используют тип Integer.
Вот список основных типов переменных в Delphi:
- Integer — целые числа из диапазона: -2147483648..+2147483647
- Shortin — целые числа из диапазона: -128..+127
- Byte — целые числа из диапазона: 0..+255
- Real — как целые так и дробные числа из диапазона: 5e-324..1.7e+308
- Double — схож с типом Real
- String — строковый тип данных
- Char — символьный тип данных
- Bollean — логический тип данных. Может принимать значение True — истина или False — ложь
С теорией мы закончили, теперь давайте откроем Delphi 7 и создадим новый проект. После этого кидаем на форму знакомый нам компонент Button и еще не знакомый Label. Компонент Label эта такая полезная вещь, в которую можно записать какую-нибудь подпись. Например подпись для другого компонента или просто записать в него автора программы. Попробуйте отыскать компонент Label сами, наводя на все компоненты в вкладке Standard и читая всплывающую подсказку. Кому сложно найти, то это четвертый компонент слева, не считая значка курсора.
Я всё сделал и у меня получилось вот так:
Сейчас нам нужно создать событие OnClick на кнопке, я надеюсь, что вы помните, как это делать.
Переменные объявляются между ключевыми словами procedure и begin. Объявление начинается с ключевого слова var, потом пишется имя переменной и через двоеточие её тип. Заканчивается все как всегда точкой с запятой.
Создадим переменную S типа String в процедуре OnClick: После этого между ключевыми словами begin end присвоим переменной значение равное ‘Моя первая переменная’. Присвоение пишется следующим образом. Пишем имя переменной, оператор присвоения := и значение. Если мы записываем информацию типа String, то информация заключается в одинарные кавычки.
Общий вид: Теперь если скомпилировать программу и нажать на кнопку ничего существенного не произойдет, просто в переменную запишется значение и всё. Попробуем вывести значение из переменной. Делается это также просто как и записывается. Выводить значение мы будем в наш Label.
Синтаксис такой: Разберем этот код подробно. Сначала мы написали Label1, потом пишем точку и в Delphi появляется огромный список со свойствами данного компонента. Можно конечно порыться и отыскать там Caption, но мы будем умнее! Мы, после того как поставили точку, напишем еще букву C и Delphi как бы отсортирует все свойства и найдет все, которые начинаются с буквы C. Первым в списке как раз будет свойство Caption.
Выбираем его из списка и нажимаем на Enter. Заметьте, что мы писали Label1.C, но после того, как нажали Enter, Delphi сам дописал название свойства. Далее опять же идет оператор присвоения и наша переменная.
Вы наверняка спросите: «Зачем же переменная, если можно было написать Label1.Caption:=’Моя первая переменная’;?». Ответ простой. Это нужно затем, что мы изучаем переменные :).
Нет, на самом деле так присваивать тоже можно, но представьте такую ситуацию, что вы написали очень большую, популярную программу и у вас, там в программе, пятидесяти компонентам присваивается одно и тоже значение и вот перед вами встала задача: «Поменять это значение на более универсальное и понятное для пользователя».
Что вы будете делать?
- В первом случае у вас всем этим компонентам присваивается одна и та же переменная и чтобы изменить всем этим пятидесяти компонентам значение вам просто нужно поменять значение в переменной.
- Во втором случае вы сидите 20 минут и всё копируете и копируете значение всем пятидесяти компонентам.
Вывод делайте сами.
И так, продолжаем! В общем виде должно быть так: Компилируем нашу программу и нажимаем на Button (батон/кнопку). Сразу же компонент Label вместо Label1 будет показывать Моя первая переменная.
На этом хотелось бы закончить, так как я уже устал писать урок :), но я еще не познакомил вас с типом Integer и как присваивать переменную с таким типом. Вы думаете, что присваивать ее нужно точно так же как и переменную типа String, но вы ошибаетесь.
Дело в том, что свойству Caption вообще у всех компонентов можно присвоить только текстовые значения. Как мы будем присваивать числовой тип если можно только текстовой? Всё проще некуда. Между типами переменных можно как бы переключаться, то есть можно из числового типа сделать текстовой и присвоить его компоненту Label. Этим мы сейчас и займемся.
Для начала нужно начать сначала :). Объявим переменную с именем I и типом Integer, дописав ее к переменной S. Код: Далее присвоим переменной I значение 21. Заметьте, что числовое значение записывается без одинарных кавычек! Теперь присвоим свойству Caption значение переменной I, для этого нужно воспользоваться оператором IntToStr(). Он как бы конвертирует числовой тип в текстовой. В скобках указывается переменная, которую нужно конвертировать.
Общий вид кода: Скомпилируйте программу и вы увидите, что Label будет отображать значение переменной I, то есть 21.
Ну вот и всё! Удачи!
Встретимся в следующем уроке!
Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 22 Апреля 2012
Просмотров:
Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.
В Delphi как определить, когда использовать Real, Real48, двойной или одинарной типы данных?
Большинство моих приложений вращается вокруг финансовых расчетов, связанных платежи и расчеты процентных ставок. Я ищу, чтобы узнать, как определить, что Delphi тип данных лучше всего использовать.
Если я использую базу данных для хранения этих значений и я определил поля в этой базе данных, чтобы быть десятичным значением с двумя знаками после запятой, что Delphi типа данных является наиболее совместимым с этим сценарием?
Должен ли я использовать округление формулы в Delphi для форматирования результатов до двух знаков после запятой перед сохранением значения в базе данных? Если это так, что это лучшая практика для этого?
Для таких расчетов, не используют плавающие типы точек, как Real, Single или Double. Они не очень хорошо с десятичными значениями, как 0,01 или 1234.995, так как они должны приблизить их.
Вы можете использовать валюту, тип с фиксированной точкой, но по-прежнему ограничивается до 4 знаков после запятой.
Попробуйте мой Десятичный тип, в котором 28-29 места и имеет десятичный показатель поэтому он идеально подходит для таких расчетов. Единственным недостатком является то, что она не поддерживается FPU (но написана на ассемблере, тем не менее) , так что это не так быстро , как встроенных типов. Это так же , как десятичного типа , который используется в .NET (но немного быстрее) и очень похож на тот , используемый на Mac.
Если вы хотите сделать финансовые расчеты, не используют какой-либо из чисел с плавающей точкой / вещественных типов. Delphi имеет тип валюты, которая является значением фиксированной запятой с 4 знаков после запятой, что должно быть только то, что вам нужно.
Классификация типов данных в Delphi. Тип Real
Читайте также:
|
Type | Platform | Range | Format | Alias |
---|---|---|---|---|
32-bit platforms | ||||
64-bit platforms | 32-bit platforms | |||
64-bit platforms | Unsigned 64-bit | UInt64 | ||
32-bit platforms and 64-bit Windows platforms | ||||
64-bit POSIX platforms include iOS and Linux | Signed 64-bit | Int64 | ||
32-bit platforms and 64-bit Windows platforms | ||||
64-bit POSIX platforms include iOS and Linux | UInt64 |
Note: 32-bit platforms include 32-bit Windows, 32-bit macOS, 32-bit iOS, iOS Simulator and Android.
Platform-Independent Integer Types
Platform-independent integer types always have the same size, regardless of what platform you use. Platform-independent integer types include ShortInt, SmallInt, LongInt, Integer, Int64, Byte, Word, LongWord, Cardinal, and UInt64.
Platform-independent integer types
Boolean | ByteBool, WordBool, LongBool | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32bit Intel Windows | 3.37e-4932 .. 1.18e+4932 | 10-20 | 10 | |
64-bit Intel Linux 32-bit Intel macOS 32-bit Intel iOS Simulator |
3.37e-4932 .. 1.18e+4932 | 10-20 | 16 | |
other platforms | 2.23e-308 .. 1.79e+308 | 15-16 | 8 | |
Comp | all | -9223372036854775807.. 9223372036854775807 (-2 63 +1.. 2 63 -1) |
10-20 | 8 |
Currency | all | -922337203685477.5807.. 922337203685477.5807 | 10-20 | 8 |
The following remarks apply to real types:
- Real is equivalent to Double, in the current implementation.
- Real48 is maintained for backward compatibility. Since its storage format is not native to the Intel processor architecture, it results in slower performance than other floating-point types.
The 6-byte Real48 type was called Real in earlier versions of Object Pascal. If you are recompiling code that uses the older, 6-byte Real type in Delphi, you may want to change it to Real48. You can also use the compiler directive to turn Real back into the 6-byte type.
- Extended offers greater precision on 32-bit platforms than other real types.
On 64-bit platforms Extended is an alias for a Double; that is, the size of the Extended data type is 8 bytes. Thus you have less precision using an Extended on 64-bit platforms compared to 32-bit platforms, where Extended is 10 bytes. Therefore, if your applications use the Extended data type and you rely on precision for floating-point operations, this size difference might affect your data. Be careful using Extended if you are creating data files to share across platforms. For more information, see The Extended Data Type Is 2 Bytes Smaller on 64-bit Windows Systems.
- The Comp (computational) type is native to the Intel processor architecture and represents a 64-bit integer. It is >See Also
Иллюстрированный самоучитель по Delphi 7 для начинающих
Язык программирования Delphi. Типы данных.
Вещественный тип
Язык Delphi поддерживает шесть вещественных типов: Real48, single, Double, Extended, comp, Currency. Типы различаются между собой диапазоном допустимых значений, количеством значащих цифр и количеством байтов, необходимых для хранения данных в памяти компьютера (табл. 1.2).
Таблица 1.2. Вещественные (дробные) типы.
Тип Диапазон Значащих цифр Байтов Real48 2.9x 10 -39 -1.7×10 38 11-12 06 Single 1.5 x 10 -45 -3.4х 10 38 7-8 04 Double 5.0×10- 324 -1.7×10 308 15-16 08 Extended 3.6×10- 4951 -1.1 х10 4932 19-20 10 Comp 2 63 +1-2 63 -1 19-20 08 Currency -922 337 203 685 477.5808-922 337 203 685 477.5807 19-20 08 Язык Delphi поддерживает и наиболее универсальный вещественный тип – Real, который э квивалентен Double.
Символьный тип
Язык Delphi поддерживает два символьных типа: Ansichar и Widechar:
- тип Ansichar – это символы в кодировке ANSI, которым соответствуют числа в диапазоне от 0 до 255;
- тип widechar – это символы в кодировке Unicode, им соответствуют числа от 0 до 65 535.
Object Pascal поддерживает и наиболее универсальный символьный тип – Char, который эквивалентен Ansichar.
Строковый тип
Язык Delphi поддерживает три строковых типа: shortstring, Longstring и WideString:
- тип shortstring представляет собой статически размещаемые в памяти компьютера строки длиной от 0 до 255 символов;
- тип Longstring представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти;
- тип WideString представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти. Каждый символ строки типа WideString является Unicode-символом.
В языке Delphi для обозначения строкового типа допускается использование идентификатора string. Тип string эквивалентен типу shortstring.
В языке Delphi для обозначения строкового типа допускается использование идентификатора string. Тип string эквивалентен типу shortstring.
Логический тип
Логическая величина может принимать одно из двух значений True (истина) или False (ложь). В языке Delphi логические величины относят к типу Boolean.
Real — Тип Delphi
Программа, представленная в виде инструкций языка программирования, называется исходной программой. Она состоит из инструкций, понятных человеку, но не понятных процессору компьютера. Чтобы процессор смог выполнить работу в соответствии с инструкциями исходной программы, исходная программа должна быть переведена на машинный язык — язык команд процессора. Задачу преобразования исходной программы в машинный код выполняет специальная программа — компилятор.
Компилятор, схема работы которого приведена на рис. 1.4, выполняет последовательно две задачи:
1. Проверяет текст исходной программы на отсутствие синтаксических ошибок.
2. Создает (генерирует) исполняемую программу — машинный код.
Рис. 1.4. Схема работы компилятора
Следует отметить, что генерация исполняемой программы происходит только в том случае, если в тексте исходной программы нет синтаксических ошибок.
Генерация машинного кода компилятором свидетельствует лишь о том, что в тексте программы нет синтаксических ошибок. Убедиться, что программа работает правильно можно только в процессе ее тестирования — пробных запусках программы и анализе полученных результатов. Например, если в программе вычисления корней квадратного уравнения допущена ошибка в выражении (формуле) вычисления дискриминанта, то, даже если это выражение будет синтаксически верно, программа выдаст неверные значения корней.
В среде программирования Delphi для записи программ используется язык программирования Delphi. Программа на Delphi представляет собой последовательность инструкций, которые довольно часто называют операторами. Одна инструкция от другой отделяется точкой с запятой.
Каждая инструкция состоит из идентификаторов. Идентификатор может обозначать:
- Инструкцию языка (:=, if, while, for);
- переменную;
- константу (целое или дробное число);
- арифметическую (+, -,*,/) или логическую (and, or, not) операцию;
- подпрограмму (процедуру или функцию);
- отмечать начало (procedure, function) или конец (end) подпрограммы ИЛИ блока (begin, end).
Программа может оперировать данными различных типов: целыми и дробными числами, символами, строками символов, логическими величинами.
Язык Delphi поддерживает семь целых типов данных: shortint, smailint, Longint, Int64, Byte, word и Longword, описание которых приведено в табл. 1.1.
Таблица 1.1. Целые типы
-2 147 483 648 — 2 147 483 647
8 битов, беззнаковый
16 битов, беззнаковый
0 — 4 294 967 295
32 бита, беззнаковый
Object Pascal поддерживает и наиболее универсальный целый тип — Integer, который Эквивалентен Longint.
Язык Delphi поддерживает шесть вещественных типов: Reai48, single, Double, Extended, comp, Currency. Типы различаются между собой диапазо-ном допустимых значений, количеством значащих цифр и количеством байтов, необходимых для хранения данных в памяти компьютера (табл. 1.2).
Таблица 1.2. Вещественные (дробные) типы
2.9x 10 -39 -1.7×10 38
1.5 x 10 -45 -3.4х 10 38
5.0×10- 324 -1.7×10 308
3.6×10- 4951 -1.1 х10 4932
-922 337 203 685 477.5808 —922 337 203 685 477.5807
Язык Delphi поддерживает и наиболее универсальный вещественный тип — Real, который эквивалентен Double.
Язык Delphi поддерживает два символьных типа: Ansichar и Widechar:
- тип Ansichar — это символы в кодировке ANSI, которым соответствуют числа в диапазоне от 0 до 255;
- тип widechar — это символы в кодировке Unicode, им соответствуют числа от 0 до 65 535.
Object Pascal поддерживает и наиболее универсальный символьный тип — Char, который эквивалентен Ansichar.
Язык Delphi поддерживает три строковых типа: shortstring, Longstring, WideString:
- тип shortstring представляет собой статически размещаемые в памяти компьютера строки длиной от 0 до 255 символов;
- тип Longstring представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти;
- тип WideString представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти. Каждый символ строки типа WideString является Unicode-символом.
В языке Delphi для обозначения строкового типа допускается использование идентификатора string. Тип string эквивалентен типу shortstring.
Логическая величина может принимать одно из двух значений True (истина) или False (ложь). В языке Delphi логические величины относят к типу Boolean.
Переменная — это область памяти, в которой находятся данные, которыми оперирует программа. Когда программа манипулирует с данными, она, фактически, оперирует содержимым ячеек памяти, т. е. переменными.
Чтобы программа могла обратиться к переменной (области памяти), например, для того, чтобы получить исходные данные для расчета по формуле или сохранить результат, переменная должна иметь имя. Имя переменной придумывает программист.
В качестве имени переменной можно использовать последовательность из букв латинского алфавита, цифр и некоторых специальных символов. Первым символом в имени переменной должна быть буква. Пробел в имени переменной использовать нельзя.
Следует обратить внимание на то, что компилятор языка Delphi не различает прописные и строчные буквы в именах переменных, поэтому имена SUMMA, Summa и summa обозначают одну и ту же переменную.
Желательно, чтобы имя переменной было логически связано с ее назначением. Например, переменным, предназначенным для хранения коэффициентов и корней квадратного уравнения, которое в общем виде традиционно записывают
вполне логично присвоить имена а, b, с, x1 и х2. Другой пример. Если в программе есть переменные, предназначенные для хранения суммы покупки и величины скидки, то этим переменным можно присвоить имена
TotalSumm и Discount или ObSumma и Skidka.
В языке Delphi каждая переменная перед использованием должна быть объявлена. С помощью объявления устанавливается не только факт существования переменной, но и задается ее тип, чем указывается и диапазон допустимых значений.
В общем виде инструкция объявления переменной выглядит так:
- имя — имя переменной;
- тип — тип данных, для хранения которых предназначена переменная.
а : Real; b : Real; i : Integer;
В приведенных примерах объявлены две переменные типа real и одна переменная типа integer.
В тексте программы объявление каждой переменной, как правило, помещают на отдельной строке.
Если в программе имеется несколько переменных, относящихся к одному типу, то имена этих переменных можно перечислить в одной строке через запятую, а тип переменных указать после имени последней переменной через двоеточие, например:
а,b,с : Real; x1,x2 : Real;
В языке Delphi существует два вида констант: обычные и именованные.
Обычная константа — это целое или дробное число, строка символов или отдельный символ, логическое значение.
Типы данных Delphi
Язык Delphi поддерживает семь целых типов данных, описание которых приведено в табл. 3.
Таблица 3. Целые типы
Тип Диапазон Формат Shortint -128 – 127 8 битов Smallint -32768 – 32767 16 битов Longint -2147483648 – 2147483647 32 бита Int64 -2 63 – 2 63 -1 64 бита Byte 0 – 255 8 битов Word 0 – 65535 16 битов Longword 0 – 4294967295 32 бита Язык Delphi поддерживает и наиболее универсальный целый тип — Integer, который эквивалентен Longint.
Язык Delphi поддерживает шесть вещественных типов. Типы различаются между собой диапазоном допустимых значений, количеством значащих цифр и количеством байтов, необходимых для хранения данных в памяти компьютера (табл. 4).
Таблица 4. Вещественные (дробные) типы
Тип Диапазон Значащих цифр Байтов Real48 2.9 x 10 -39 – 1.7 x 10 38 11 – 12 Single 1.5 x 10 -45 – 3.4 x 10 38 7 – 8 Double 5.0 x 10 -324 – 1.7 x 10 308 15 – 16 Extended 3.6 x 10 -4951 – 1.1 x 10 4932 19 – 20 Comp -2 63 +1 – 2 63 -1 19 – 20 Currency -9223372036854775808 –9223372036854775807 19 –20 Язык Delphi поддерживает и наиболее универсальный вещественный тип – Real, который эквивалентен Double.
Язык Delphi поддерживает два символьных типа: Ansichar и Widechar:
· тип Ansichar — это символы в кодировке ANSI, которым соответствуют числа в диапазоне от 0 до 255;
· тип widechar — это символы в кодировке Unicode, им соответствуют числа от 0 до 65535.
Язык Delphi поддерживает и наиболее универсальный символьный тип –Char, который эквивалентен Ansichar.
Язык Delphi поддерживает три строковых типа: Shortstring, Longstring и WideString:
· тип Shortstring представляет собой статически размещаемые в памяти компьютера строки длиной от 0 до 255 символов;
· тип Longstring представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти;
· тип WideString представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти.
Каждый символ строки типа WideString является Unicode-символом. В языке Delphi для обозначения строкового типа допускается использование идентификатора String. Тип String эквивалентен типу Shortstring.
Логическая величина может принимать одно из двух значений True (истина) или False (ложь). В языке Delphi логические величины относят к типу Boolean.
В Delphi как определить, когда использовать Real, Real48, двойной или одинарной типы данных?
Большинство моих приложений вращается вокруг финансовых расчетов, связанных платежи и расчеты процентных ставок. Я ищу, чтобы узнать, как определить, что Delphi тип данных лучше всего использовать.
Если я использую базу данных для хранения этих значений и я определил поля в этой базе данных, чтобы быть десятичным значением с двумя знаками после запятой, что Delphi типа данных является наиболее совместимым с этим сценарием?
Должен ли я использовать округление формулы в Delphi для форматирования результатов до двух знаков после запятой перед сохранением значения в базе данных? Если это так, что это лучшая практика для этого?
Для таких расчетов, не используют плавающие типы точек, как Real, Single или Double. Они не очень хорошо с десятичными значениями, как 0,01 или 1234.995, так как они должны приблизить их.
Вы можете использовать валюту, тип с фиксированной точкой, но по-прежнему ограничивается до 4 знаков после запятой.
Попробуйте мой Десятичный тип, в котором 28-29 места и имеет десятичный показатель поэтому он идеально подходит для таких расчетов. Единственным недостатком является то, что она не поддерживается FPU (но написана на ассемблере, тем не менее) , так что это не так быстро , как встроенных типов. Это так же , как десятичного типа , который используется в .NET (но немного быстрее) и очень похож на тот , используемый на Mac.
Если вы хотите сделать финансовые расчеты, не используют какой-либо из чисел с плавающей точкой / вещественных типов. Delphi имеет тип валюты, которая является значением фиксированной запятой с 4 знаков после запятой, что должно быть только то, что вам нужно.