Тип данных Double (Visual Basic)

  • Время чтения: 2 мин

В этой статье

Содержит подписанные 64-разрядные (8-байтные) числа с плавающей запятой двойной точности, которые находятся в диапазоне от-1.79769313486231570 E + 308 до-4.94065645841246544 E-324 для отрицательных значений и от 4.94065645841246544 E-324 до 1.79769313486231570 E + 308 для положительные значения.Holds signed IEEE 64-bit (8-byte) double-precision floating-point numbers that range in value from -1.79769313486231570E+308 through -4.94065645841246544E-324 for negative values and from 4.94065645841246544E-324 through 1.79769313486231570E+308 for positive values. Числа двойной точности хранят приближение вещественного числа.Double-precision numbers store an approximation of a real number.

ПримечанияRemarks

Тип Double данных предоставляет самые большие и наименьшие возможные величины числа.The Double data type provides the largest and smallest possible magnitudes for a number.

Значение по умолчанию для типа Double — 0.The default value of Double is 0.

Советы по программированиюProgramming Tips

  • Обеспечивают.Precision. При работе с числами с плавающей запятой Помните, что они не всегда имеют точное представление в памяти.When you work with floating-point numbers, remember that they do not always have a precise representation in memory. Это может привести к непредвиденным результатам некоторых операций, таких как сравнение значений и

    Mod оператор.This could lead to unexpected results from certain operations, such as value comparison and the Mod operator. Дополнительные сведения см. в разделе Устранение неполадок типов данных.For more information, see Troubleshooting Data Types.

  • Нули в конце.Trailing Zeros. Типы данных с плавающей запятой не имеют внутреннего представления конечных нулей.The floating-point data types do not have any internal representation of trailing zero characters. Например, они не различаются между 4,2000 и 4,2.For example, they do not distinguish between 4.2000 and 4.2. Следовательно, конечные нули не отображаются при отображении или печати значений с плавающей запятой.Consequently, trailing zero characters do not appear when you display or print floating-point values.

  • Символы типа.Type Characters. При добавлении к литералу символа типа литерала R производится принудительное приведение литерала к типу данных Double.Appending the literal type character R to a literal forces it to the Double data type. Например, если после Rцелочисленного значения указывается, значение изменяется Doubleна.For example, if an integer value is followed by

    R, the value is changed to a Double.

    ' Visual Basic expands the 4 in the statement Dim dub As Double = 4R to 4.0:
    Dim dub As Double = 4.0R
    

    При добавлении символа идентификатора типа # к любому идентификатору производится принудительное приведение этого идентификатора к типу Double.Appending the identifier type character # to any identifier forces it to Double. В следующем примере переменная num типизирована Doubleкак:In the following example, the variable num is typed as a Double:

    Dim num# = 3
    
  • Тип платформы.

    Framework Type. В .NET Framework данный тип соответствует структуре System.Double.The corresponding type in the .NET Framework is the System.Double structure.

См. такжеSee also

docs.microsoft.com

Число двойной точности — Википедия

Материал из Википедии — свободной энциклопедии

Число́ двойно́й то́чности (Double precision, Double) — компьютерный формат представления числа с плавающей запятой, занимающий в памяти 64 бита, или 8 байт. Как правило, обозначает числа с плавающей запятой стандарта IEEE 754.

Числа с плавающей запятой (двойной/одинарной/четверной точности) поддерживаются сопроцессором (до 80486SX, включительно, выполнен как отдельный модуль-0х87/0х287/0х387/0х487, начиная с 80486DX является встроенным в главный процессор. Сопроцессор, хотя он сейчас и является частью главного процессора, принято называть FPU — Floating Point Unit, буквально «модуль плавающей запятой»). В компьютерах, которые имеют 64-разрядные числа с плавающей запятой, большинство чисел хранятся в двойной точности, поскольку использование чисел одинарной точности обеспечивает почти такую же производительность. Но все вычисления в FPU осуществляются в 80-битном (расширенном, extended) представлении.

Одним из первых языков программирования, позволявшим использовать числа одинарной и двойной точности с плавающей запятой, был Фортран.

Числа двойной точности с плавающей запятой обеспечивают точность в 15—17 десятичных цифр и масштабы в диапазоне примерно от 10−308 до 10308.

Знак
(11 бит)
Порядок
(52 бита)
Мантисса
635655484740393231242316
15
870

Окончательное значение числа равняется ±знак · (1+мантисса/ 252) × 2порядок − 1023. Знак 0 соответствует положительным числам, знак 1 отрицательным. Старший бит мантиссы, который всегда равен единице, опускается. Порядок 0 (20=1){\displaystyle (2^{0}=1)} записывается как 1023.

Существуют также денормализованные числа, записываемые порядком 00…00 и имеющие значение ±знак × (0+мантисса/ 252) · 21 − 1023. Порядок 11…11 предназначен для записи особых чисел: «бесконечности» и «не-числа» — NaN.

  • 0x 3ff0 0000 0000 0000 = 1
  • 0x 3ff0 0000 0000 0001 ≈ 1,0000000000000002 (наименьшее число, большее 1)
  • 0x 3ff0 0000 0000 0002 ≈ 1,0000000000000004
  • 0x 4000 0000 0000 0000 = 2
  • 0x c000 0000 0000 0000 = –2
  • 0x 0000 0000 0000 0001 = 2–1022–52 ≈ 4,9406564584124654×10−324 (минимальное денормализованное положительное число двойной точности)
  • 0x 000f ffff ffff ffff = 2–1022– 2–1022–52 ≈ 2,2250738585072009×10–308 (максимальное денормализованное положительное число двойной точности)
  • 0x 0010 0000 0000 0000 = 2–1022 ≈ 2,2250738585072014×10−308 (минимальное нормализованное положительное число двойной точности)
  • 0x 7fef ffff ffff ffff = (1 + (1 – 2–52))×21023 ≈ 1,7976931348623157×10308 (максимальное число двойной точности)
  • 0x 0000 0000 0000 0000 = 0
  • 0x 8000 0000 0000 0000 = –0
  • 0x 7ff0 0000 0000 0000 = Infinity
  • 0x fff0 0000 0000 0000 = −Infinity
  • 0x 7fff ffff ffff ffff = NaN
  • 0x 3fd5 5555 5555 5555 ≈ 1/3

ru.wikipedia.org

тип данных double | Microsoft Docs

  • Время чтения: 2 мин

В этой статье

Double (двойная точность с плавающей запятой) хранятся в виде значений с плавающей запятой IEEE 64-bit (8 байт) в диапазоне от:Double (double-precision floating-point) variables are stored as IEEE 64-bit (8-byte) floating-point numbers ranging in value from:

  • от –1,79769313486231E308 до –4,94065645841247E-324 для отрицательных значений-1.79769313486231E308 to -4.94065645841247E-324 for negative values

  • от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений4.94065645841247E-324 to 1.79769313486232E308 for positive values

Символ объявления типа для Double — это знак Number (#).The type-declaration character for Double is the number (#) sign.

См. такжеSee also

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

docs.microsoft.com

Типы данных — Основы языка

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

Подобно тому, как обычные объекты имеют типы характеристик цвета (красный, синий, жёлтый, зелёный), вкуса (горький, кислый, сладкий), количества (полтора, два, семь), в языке программирования MQL4 данные различаются по типу. Говоря о типе данных, мы будем иметь в виду тип значения константы, переменной и значения, возвращаемого функцией (понятие функции рассматривается в разделе Функции).

В языке MQL4 различают следующие типы (констант, переменных и значений, возвращаемых функциями):

  • int — целые числа.
  • double — действительные числа.
  • bool — значения логического типа.
  • string — значения строкового типа.
  • color — значения цветового типа.
  • datetime — значение даты и времени.

Тип int

Значения типа int — это целые числа. К этому типу относятся значения, которые являются целыми по своей сути. Примерами целых чисел могут служить: количество баров в окне финансового инструмента (16000 баров), количество открытых и отложенных ордеров (3 ордера), дистанция в пунктах от текущего курса финансового инструмента до цены открытия ордера (15 пунктов). Количество таких объектов, как события, также бывают только целыми. Например, количество попыток открыть ордер не может быть равным полутора, а только одной, двум, трём и т.д.

Различают 2 вида целых значений:

  • Десятичные значения могут состоять из цифр 0 — 9 и быть положительными или отрицательными: 10, 11, 12, 1, 5, -379, 25, -12345, -1, 2.
  • Шестнадцатеричные значения могут состоять из букв латинского алфавита от A до F или от a до f, цифр от 0 до 9, обязательно должны начинаться с 0x или 0X и принимать положительные и отрицательные значения: 0x1a7b, 0xff340, 0xAC3 0X2DF23, 0X13AAB, 0X1.

Значения типа int должны находиться в диапазоне чисел от -2 147 483 648 до 2 147 483 647. Если значение константы или переменной находится за пределами указанного диапазона, то результат работы программы будет не определён. В памяти компьютера значения констант и переменных типа int занимают 4 байта.

Пример использования в программе переменной типа int:

   int Art  = 10;                         
int B_27 = -1;
int Num = 21;
int Max = 2147483647;
int Min = -2147483648;

Тип double

Значения типа double — это действительные числа, содержащие дробную часть.

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

Иногда при составлении программ могут возникнуть трудности с определением типа переменной, т.е программисту бывает не сразу понятно, к какому типу (int или double) относится переменная. Рассмотрим небольшой пример:

Программа открыла в течение недели 12 ордеров. Какого типа должна быть переменная А, учитывающая среднее количество ордеров, открываемых этой программой в день? Очевидно, что ответ: A = 12 ордеров / 5 дней. То есть, переменная А = 2.4 должна учитываться в программе, как double, т.к. у этого значения есть дробная часть. А какого типа должна быть эта же переменная А в случае, если общее количество открытых за неделю ордеров составляет 10? Казалось бы, что если 2 (10 ордеров / 5 дней = 2) не имеет дробной части, то переменная А может учитываться как int. Однако это рассуждение ошибочно. Текущее значение некоторой переменной может иметь дробную часть, состоящую из одних нулей. Но важно то, что значение этой переменной является действительным по своей сути. В этом случае переменная А также должна иметь тип double, и при записи константы в программе обязательно отображается разделяющая точка: А = 2.0

Значения действительных констант и переменных состоят из целой части, десятичной точки (.) и дробной части. Они могут принимать положительные и отрицательные значения. Целая и дробная части составляются из цифр 0 — 9. Количество значащих цифр после десятичной точки может достигать 15. Например:

27.12 -1.0 2.5001 -765456.0 198732.07 0.123456789012345

Интервал значений типа double находится в пределах от -1.7 * e-308 до 1.7 * e308. В памяти компьютера значения констант и переменных типа double занимают 8 байт.

Пример использования в программе переменной типа double:

   double Art     = 10.123;                 
double B_27 = -1.0;
double Num = 0.5;
double MMM = -12.07;
double Price_1 = 1.2756;

Тип bool

Значения типа bool — это значения логического типа, содержанием которых являются ложь и истина.

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

Список учеников Учебник физики Учебник биологии Учебник химии
1 Иванов V
2 Петров V V
3 Сидоров V V
25 Миронов V V V

Значения в правых столбцах будут принимать только 2 возможных значения: верно или неверно. Эти значения нельзя отнести к ранее рассмотренным типам данных, поскольку они не являются числами. Они также не являются значениями цвета, вкуса, количества и т.д. Тем не менее, они несут важную смысловую нагрузку. В языке MQL4 подобные значения называют логическими. Характеристикой констант и переменных типа bool является то, что они могут принимать лишь 2 возможных значения — истина (true, True, TRUE, 1) или ложь (false, False, FALSE, 0). В памяти компьютера значения констант и переменных типа bool занимают 4 байта.

Пример использования в программе переменной типа bool:

   bool aa    = True;           
bool B17 = TRUE;
bool Hamma = 1;

bool Asd = False;
bool Nol = FALSE;
bool Prim = 0;


Тип string

Значение типа string — это значение строкового типа, представляющее собой набор символов кода ASCII.

В обычной жизни аналогичное содержание имеют названия, например, магазинов, марок автомобилей и пр. Значение строкового типа записывается в виде набора символов, заключённого в двойные кавычки (не путать двойные кавычки с двумя одинарными!). Кавычки используются только для того, чтобы обозначить начало и окончание значения строковой константы, а собственно значением является совокупность символов, обрамлённая кавычками.

Если необходимо ввести в строку двойную кавычку «, то перед ней надо поставить символ обратной косой черты: \. В строку могут быть введены любые специальные символьные константы, перед которыми стоит символ обратной косой черты \. Длина строковой константы — от 0 до 255 символов. Если длина строковой константы превосходит максимальную, лишние символы справа отбрасываются, и компилятор выдаёт соответствующее предупреждение. Сочетание из двух символов, первый из которых – обратная косая черта \, обычно является общепринятым и воспринимается большинством программ как указание на выполнение определённого форматирования текста. В тексте это сочетание не отображается. Например, сочетание \n указывает на необходимость переноса строки, \t указывает на табуляцию и т.д.

Значение строкового типа записывается в виде набора символов, заключённого в двойные кавычки: «MetaTrader 4″, » Stop Loss», «Ssssstop_Loss», «stoploss», «10 pips». Собственно строковым значением является набор символов, находящийся внутри кавычек. Кавычки используются лишь для обозначения границ значения. Внутреннее представление — структура размером в 8 байт.

Пример использования в программе переменной типа string:

   string Prefix    = "MetaTrader 4";              
string Postfix = "_of_my_progr. OK";
string Name_Mass = "History";
string text ="Верхняя строка\nНижняя строка";

Тип color

Значение типа color — это значение цветового типа.

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

Значения цветовых констант и переменных могут быть представлены одним из трёх видов:

  • Литералы

    Значение цветового типа в виде литерала состоит из трёх частей, представляющих собой числовые значения интенсивности трех основных компонент цвета: красного, зеленого и синего. Значение такого вида начинается с символа C и обрамляется одинарными кавычками.

    Числовые значения интенсивности компоненты цвета лежат в диапазоне от 0 до 255 и могут записываться как в десятичном, так и в шестнадцатеричном виде.

    Примеры: C’128,128,128′ (серый), C’0x00,0x00,0xFF’ (синий), C’0xFF,0x33,0x00′ (красный).

  • Целочисленное представление

    Целочисленное представление записывается в виде шестнадцатеричного или десятичного числа. Шестнадцатеричное число имеет вид 0xRRGGBB, где RR — значение интенсивности красной компоненты цвета, GG — зелёной, а BB — синей. Десятичные константы не имеют прямого отражения в RGB. Они представляют собой десятичное значение шестнадцатеричного целочисленного представления.

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

    Примеры: 0xFFFFFF (белый), 0x008000 (зеленый), 16777215 (белый), 32768 (зеленый).


    Рис. 11. В современных редакторах можно взять параметры цвета для литерального и целочисленного представления цветового значения константы.

  • Названия цветов

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

    Black DarkGreen DarkSlateGray Olive Green Teal Navy Purple
    Maroon Indigo MidnightBlue DarkBlue DarkOliveGreen SaddleBrown ForestGreen OliveDrab
    SeaGreen DarkGoldenrod DarkSlateBlue Sienna MediumBlue Brown DarkTurquoise DimGray
    LightSeaGreen DarkViolet FireBrick MediumVioletRed MediumSeaGreen Chocolate Crimson SteelBlue
    Goldenrod MediumSpringGreen LawnGreen CadetBlue DarkOrchid YellowGreen LimeGreen OrangeRed
    DarkOrange Orange Gold Yellow Chartreuse Lime SpringGreen Aqua
    DeepSkyBlue Blue Magenta Red Gray SlateGray Peru BlueViolet
    LightSlateGray DeepPink MediumTurquoise DodgerBlue Turquoise RoyalBlue SlateBlue DarkKhaki
    IndianRed MediumOrchid GreenYellow MediumAquamarine DarkSeaGreen Tomato RosyBrown Orchid
    MediumPurple PaleVioletRed Coral CornflowerBlue DarkGray SandyBrown MediumSlateBlue Tan
    DarkSalmon BurlyWood HotPink Salmon Violet LightCoral SkyBlue LightSalmon
    Plum Khaki LightGreen Aquamarine Silver LightSkyBlue LightSteelBlue LightBlue
    PaleGreen Thistle PowderBlue PaleGoldenrod PaleTurquoise LightGray Wheat NavajoWhite
    Moccasin LightPink Gainsboro PeachPuff Pink Bisque LightGoldenrod BlanchedAlmond
    LemonChiffon Beige AntiqueWhite PapayaWhip Cornsilk LightYellow LightCyan Linen
    Lavender MistyRose OldLace WhiteSmoke Seashell Ivory Honeydew AliceBlue
    LavenderBlush MintCream Snow White




В памяти компьютера значения констант и переменных типа color занимают 4 байта. Пример использования такой переменной в программе:

color Paint_1 = C'128,128,128';       
color Colo = C'0x00,0x00,0xFF';
color BMP_4 = C'0xFF,0x33,0x00'

color K_12 = 0xFF3300;
color N_3 = 0x008000;
color Color = 16777215;
color Alfa = 32768;

color A = Red;
color B = Yellow;
color Colorit = Black;
color B_21 = White;


Тип datetime

Значение типа datetime — это значение даты и времени.

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

Константа обрамляется одинарными кавычками и начинается с символа D. Допускается использование усечённого значения: либо без даты, либо без времени, либо пустое значение. Диапазон изменения значений: от 1 января 1970 года до 31 декабря 2037 года. В памяти компьютера значения констант и переменных типа datetime занимают 4 байта. Значение представляет собой количество секунд, прошедших с 00:00 1 января 1970 года.

Пример использования в программе переменной типа datetime:

datetime Alfa    = D'2004.01.01 00:00';       
datetime Tim = D'01.01.2004';
datetime Tims = D'2005.05.12 16:30:45';
datetime N_3 = D'12.05.2005 16:30:45';
datetime Compile = D'';

Объявление и инициализация переменных

Для того чтобы в ходе вычислений у программы не возникало вопросов, к какому типу данных принадлежит та или иная переменная, в MQL4 принято обязательное правило явно обозначать тип переменных в самом начале программы. Прежде чем переменная начнёт участвовать в каких-либо вычислениях, её необходимо объявить.

Объявление переменной — это первое упоминание переменной в программе. При объявлении переменной указывается её тип.

Инициализация переменной — это присвоение ей при её объявлении значения, соответствующего её типу. Любая переменная может быть инициализирована. Если явно не задано никакое начальное значение, то численная переменная инициализируется нулем (0), а переменная строкового типа инициализируется пустой строкой.

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

Объявление переменной может осуществляться в отдельной строке:

   int Var_1;                 

Эта запись означает, что будет использоваться переменная Var_1 (собственно объявление переменной) и тип этой переменной — int.

Допускается объявление в одной строке нескольких переменных одного типа:

   int Var_1, Box, Comm; 

Эта запись означает, что будут использоваться переменные Var_1, Box и Comm и тип этих переменных — int, то есть перечисленные переменные будут учтены программой как переменные целого типа.

Допускается инициализация переменных в рамках операторов:

   double Var_5 = 3.7;

Эта запись означает, что будет использоваться переменная Var_5 вещественного типа с начальным значением 3.7.

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

Название переменной никак не связано с типом переменной, т.е. по названию переменной невозможно судить о её типе. Одно и то же название переменной в разных программах может быть использовано для переменных любого типа. Но в пределах одной программы тип любой переменной может быть объявлен только один раз. В ходе выполнения программы тип объявленной переменной не изменяется.

Примеры объявления и инициализации переменных

Объявление переменных может осуществляться в нескольких строках или в одной строке.

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


Рис. 12. Примеры объявления переменных в отдельной строке.

Объявление типа переменных производится один раз при первом упоминании переменной. При втором и последующих упоминаниях переменной её тип не указывается.


Рис. 13. Примеры объявления переменных в отдельной строке.

Допускаются объявление и инициализация переменных в операторах.


Рис. 14. Примеры инициализации переменных.


Рис. 15. Инициализация переменной в заголовке составного оператора.


book.mql4.com

Тип данных Double (Visual Basic)

 

Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

Переменные типа Double хранятся как 64-разрядные (8-байтные) IEEE-числа двойной точности с плавающей запятой и знаком, которые изменяются в диапазоне от -1,79769313486231570E+308 до -4,94065645841246544E-324 для отрицательных значений и от 4,94065645841246544E-324 до 1,79769313486231570E+308 для положительных. Числа двойной точности сохраняют приближенные значения действительных чисел.

Тип данных Double предоставляет наибольшую и наименьшую возможные величины для числа.

Значение по умолчанию для типа Double равно 0.

  • Точность. Используя числа с плавающей запятой, следует учитывать, что они не всегда имеют точное представление в памяти. Это может привести к непредвиденным результатам для определенных операций, таких как сравнение значений и Mod. Дополнительные сведения см. в разделе Устранение неполадок, связанных с типами данных.

  • Нули в конце строки. Типы данных с плавающей запятой не имеют какого-либо внутреннего представления нулевых байтов в конце строки. Например, они не различают значения 4,2000 и 4,2. Следовательно, нулевые символы в конце строки не появляются при отображении или печати значений с плавающей запятой.

  • Символы типов. При добавлении знака R типа литерала к литералу происходит приведение литерала к типу данных Double. Например, если после целочисленного значения находится знак R, то происходит приведение значения к типу Double.

    При добавлении знака # типа идентификатора к какому-либо идентификатору происходит приведение идентификатора к типу Double. В следующем примере переменная num типизирована как Double:

  • Тип Framework.. В .NET Framework данный тип соответствует структуре System.Double.

System.Double
Типы данных
Тип данных Decimal
Тип данных Single
Функции преобразования типов
Сводка по преобразованию
Эффективное использование типов данных
Устранение неполадок, связанных с типами данных
Символы типов

technet.microsoft.com

Руководство C# | Типы данных

77

C# — Руководство по C# — Типы данных

Типы данных имеют особенное значение в C#, поскольку это строго типизированный язык. Это означает, что все операции подвергаются строгому контролю со стороны компилятора на соответствие типов, причем недопустимые операции не компилируются. Следовательно, строгий контроль типов позволяет исключить ошибки и повысить надежность программ. Для обеспечения контроля типов все переменные, выражения и значения должны принадлежать к определенному типу. Такого понятия, как «бестиповая» переменная, в данном языке программирования вообще не существует. Более того, тип значения определяет те операции, которые разрешается выполнять над ним. Операция, разрешенная для одного типа данных, может оказаться недопустимой для другого.

В C# имеются две общие категории встроенных типов данных: типы значений и ссылочные типы. Они отличаются по содержимому переменной. Концептуально разница между ними состоит в том, что тип значения (value type) хранит данные непосредственно, в то время как ссылочный тип (reference type) хранит ссылку на значение.

Эти типы сохраняются в разных местах памяти: типы значений сохраняются в области, известной как стек, а ссылочные типы — в области, называемой управляемой кучей.

Давайте разберем типы значений.

Целочисленные типы

В C# определены девять целочисленных типов: char, byte, sbyte, short, ushort, int, uint, long и ulong. Но тип char применяется, главным образом, для представления символов и поэтому рассматривается отдельно. Остальные восемь целочисленных типов предназначены для числовых расчетов. Ниже представлены их диапазон представления чисел и разрядность в битах:

Целочисленные типы C#
Тип Тип CTS Разрядность в битах Диапазон
byte System.Byte 8 0:255
sbyte System.SByte 8 -128:127
short System.Int16 16 -32768 : 32767
ushort System.UInt16 16 0 : 65535
int System.Int32 32 -2147483648 : 2147483647
uint System.UInt32 32 0 : 4294967295
long System.Int64 64 -9223372036854775808 : 9223372036854775807
ulong System.UInt64 64 0 : 18446744073709551615

Как следует из приведенной выше таблицы, в C# определены оба варианта различных целочисленных типов: со знаком и без знака. Целочисленные типы со знаком отличаются от аналогичных типов без знака способом интерпретации старшего раз

professorweb.ru

Диапазоны типов данных

 

Опубликовано: Июнь 2016

Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

Компиляторы Visual C++ (32-разрядные и 64-разрядные) поддерживают типы, указанные в приведенной ниже таблице.

  • int (unsigned``int)

  • __int8 (unsigned``__int8)

  • __int16 (unsigned``__int16)

  • __int32 (unsigned``__int32)

  • __int64 (unsigned``__int64)

  • short (unsigned``short)

  • long (unsigned``long)

  • long long (unsigned``long``long)

Если имя начинается с двух символов подчеркивания (__), тип данных является нестандартным.

Диапазоны, представленные в следующей таблице, включают указанные значения.

Имя типаБайтыДругие именаДиапазон значений
int4signedОт -2 147 483 648 до 2 147 483 647
unsigned int4без знакаОт 0 до 4 294 967 295
__int81charОт -128 до 127
unsigned __int81unsigned charОт 0 до 255
__int162короткое, короткое целочисленное, короткое целочисленное со знакомОт -32 768 до 32 767
unsigned __int162короткое без знака, короткое целочисленное без знакаОт 0 до 65 535
__int324со знаком, целочисленное со знаком, целочисленноеОт -2 147 483 648 до 2 147 483 647
unsigned __int324без знака, целочисленное без знакаОт 0 до 4 294 967 295
__int648длинное длинное, со знаком длинное длинноеОт -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
unsigned __int648без знака длинное длинноеОт 0 до 18 446 744 073 709 551 615
bool1Нетfalse или true
char1НетПо умолчанию — от -128 до 127

При компиляции при помощи /J — от 0 до 255

signed char1НетОт -128 до 127
unsigned char1НетОт 0 до 255
short2короткое целочисленное, короткое целочисленное со знакомОт -32 768 до 32 767
unsigned short2короткое целочисленное число без знакаОт 0 до 65 535
long4длинное целочисленное, длинное целочисленное со знакомОт -2 147 483 648 до 2 147 483 647
unsigned long4длинное целочисленное число без знакаОт 0 до 4 294 967 295
длинное длинное8Нет (но эквивалентно __int64)От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
без знака длинное длинное8Нет (но эквивалентно unsigned__int64)От 0 до 18 446 744 073 709 551 615
enumВозможны разные вариантыНетСм. раздел Заметки ниже в этой статье.
плавающее4Нет3,4E +/- 38 (7 знаков)
double8Нет1,7E +/- 308 (15 знаков)
длинное двойноеТо же, что и для двойногоНетТо же, что и для двойного
wchar_t2__wchar_tОт 0 до 65 535

В зависимости от характера использования переменная типа __wchar_t обозначает расширенный символьный или многобайтовый символьный тип. Чтобы указать константу расширенного символьного типа, перед символьной или строковой константой следует использовать префикс L.

signed и unsigned — это модификаторы, которые можно использовать с любым целочисленным типом, кроме типа bool. Обратите внимание, что char, signed char и unsigned char — это три разных типа, предназначенных для механизмов, подобных перегрузке и шаблонам.

Размер типов int и unsigned``int — 4 байта. Однако переносимый код не должен зависеть от размера int, поскольку языковой стандарт позволяет варьировать его в зависимости от реализации.

C и C++ в Visual Studio также поддерживают целочисленные типы с указанием размера. Дополнительные сведения см. в разделах __int8, __int16, __int32, __int64 и Пределы целых чисел.

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

Диапазон перечисляемых типов зависит от контекста языка и указанных флажков компилятора. Дополнительные сведения см. в статьях Объявления перечислений C и Объявления перечислений C++.

Ключевые слова
Фундаментальные типы

technet.microsoft.com