вторник, 15 ноября 2011 г.

Типы данных в VB.Net. Преобразование типов данных.

Числовые типы данных
Числовой типПояснениеПример
Byte1-байтовое целое без знака в интервале от 0 до 2555, 17, 255, но не 257 и не 678
Short2-байтовое целое со знаком в интервале от -32 768 до 32 7675, 17, 255, но не 32 768 и не 1000000
integer4-байтовое целое со знаком в интервале от -2 147 483 648 до 2 147 483 6475, 17, 255, 32 768, 1000000, но не -2 147 483 649
Long8-байтовое целое со знаком в интервале от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 8075, 17, 255, 32 768, 1000000, -2 147 483 649, но не 9 223 372 036 854 775 809
Single4-байтовое вещественное число5, 17,3, -255, 32 768,40
Double8-байтовое вещественное число5, 17,3, -255, 32 768,40
Decimal12-байтовое вещественное число, гарантирующее отсутствие ошибок округления в громадном интервале допустимых значений с 28 значащими цифрами. Формальное определение гласит, что тип Decimal предназначен для хранения чисел с мантиссой в интервале ±79 228 162 514 264 337 593 543 950 335, масштабируемых до произвольного порядка при условии, что количество значащих цифр не превышает 28.Таким образом, наименьшее число, представляемое типом Decimal, равно ±0.0000000000000000000000000001.
Преобразования разнотипных значений
В VB .NET предусмотрен режим жесткой проверки типов Option Strict. Чтобы активизировать его, включите следующую команду в начало программы (также можно воспользоваться флажком Strict Type Checking на вкладке Build диалогового окна Project Properties):

Option Strict On

При активизации этого режима (а это следует делать всегда!) VB .NET требует, чтобы любые преобразования типов, которые могут привести к потере данных, выполнялись явно. Например, при преобразовании Single к типу Integer может произойти потеря точности, поскольку тип Integer не позволяет представить весь интервал допустимых значений типа Single. С другой стороны, если потеря данных исключена (скажем, при преобразовании Integer в тип Long или Decimal), VB .NET выполняет преобразование автоматически. В документации VB .NET преобразования без потери данных называются расширяющими преобразованиями (widening conversions)
Функции явного преобразования типов
Функция Описание
CBool Преобразует выражение к типу Boolean
CByte Преобразует выражение к типу Byte
CInt Преобразует выражение к типу Integer с округлением
Clng Преобразует выражение к типу Long с округлением
CSng Преобразует выражение к типу Single
CDate Преобразует выражение к типу Date
СDbl Преобразует выражение к типу Double
CDec Преобразует выражение к типу Decimal
CStr Преобразует выражение к типу String
CChar Преобразует первый символ строки к типу Char
VB .NET выполняет числовые преобразования только в том случае, если преобразуемое число входит в интервал допустимых значений нового типа; в противном случае выдается сообщение об ошибке.
Ниже приведен хрестоматийный пример — преобразование температуры по Цельсию в температуру по шкале Фаренгейта. Мы руководствуемся следующими предположениями:

1. Пользователь завершает ввод текста нажатием клавиши Enter.
2. Все введенные символы воспринимаются методом ReadLine().
3. Пользователь ввел число, поэтому введенный текст преобразуется к числовому типу функцией CDec (конечно, на практике введенные данные следовало бы предварительно проанализировать):

' Преобразование температуры по Цельсию в температуру по Фаренгейту

Option Strict On Module ' Вкючаем опцию жесткой проверки типов

Modulel Sub Main()

Dim cdeg As Decimal ' Описываем переменную, отражающую температуру в Цельсиях

Console. Write("Введите значение в Цельсиях...") ' Вывод сообщения на экран Введите значение в Цельсиях...

cdeg = CDec(Console.ReadLine()) ' Считывание с клавиатуры значения в переменную cdeg преобразованием в тип Decimal

Dim fdeg As Decimal ' Описываем переменную fdeg

fdeg = (((9@ / 5) * cdeg) + 32) ' Инициализируем переменную fdeg и согласно формулы преобразования присваиваем значение


Console.WriteLine(cdeg & " is " & fdeg & " degrees Fahrenheit.") 'Выводим сообщение и результат перевода на экран

Console. ReadLine() 'Задерживаем окно с результатом до нажатия клавиши enter

End Sub

End Module

Обратите внимание на суффикс @ — он гарантирует, что при вычислениях будет использоваться тип Decimal. Если убрать этот суффикс, то при включенной жесткой проверке типов будет выдано сообщение об ошибке!

Комментариев нет:

Отправить комментарий