Г. Шилдт - С#4.0 Полное руководство (1160795), страница 144
Текст из файла (страница 144)
При успешной попытке зто значение сохраняется в параметре гези15 и возвращается логическое значение сгие, а иначе возвращается логическое значение 1515е, в отличие от метода Рагзе (), который генерирует исключение при неудачном исходе преобразования Раааа 21. Пространство имен Зувтегя 735 Окончание гиабл. 21.5 Назначение Метод риЫТс згаСТс Ьоо1 ТгуРагзе(зта1по з, НивЬегзгу1ез згу1ез, 1РогваСРгочтг)ег ргоч1г)ег, оиС с(оиЫе гези1С) Таблица 21.6.
Поля, поддерживаемые структурой РоиЬ1е Псле Назначение СтРУнтУРа 22есздца1 Структура Рес1ва1 немного сложнее, чем ее аналоги для целочисленных типов данных, а также типов данных с плавающей точкой. Она содержит немало конструкторов, полей, методов и операторов, способствующих использованию типа п)ес1ва1 вместе с другими числовыми типами, поддерживаемыми в С)). Так, целый ряд методов из этой структуры обеспечивает преобразование типа с)ес1ва1 в другие числовые типы. В структуре Рес1ва1 определено восемь открытых конструкторов. Ниже приведены шесть наиболее часто используемых из них.
риЫ по риЫ по риЫсс риЫ1 с риЫ1с риЫ по Озсппа1 (1пС значение) Оесгва1 (и1пт. значение) Оесипа1 (1опч значение) Оессва1 (и1опи значение) Оес1вп1(Г1оаС значение) Оеспва1(п)оиЫе значение) риЬ11с сопзС с(оиЬ1е риЬ11с сопзс с)оиЬ1е Махуа1ие риЬ11с сопзС с)оиЬ1е Мспча1ие риЬ11с сспзС с(оиЬ1е риЬ11с сопзС г)оиЫе Иедагсче1псспсгу риЬ11с сопзС с)оиЬ1е Роз1СТче1пг1п1Су Предпринимает попытку преобразовать числовое значение, заданное в виде символьной строки з, в значение типа п(оиЬ1е, как указано в форматирующей строке, определяемой параметром Гогва с, но с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром ргоч1 с(ег, а также сведений о стилях, обозначаемых параметром зсу1ез. При успешной попытке зто значение сохраняется в параметре гези1С И ВОЗВРащается логическое значЕниЕ Сгие, а иначе возвращается логическое значение са1зе, в отличие от метода Рвсзе (), который генерирует исключение при неудачном исходе преобразования Ерз11оп Наименьшее ненулевое положительное значение Наибольшее значение, допустимое для данных типа с)оиЬ1е Наименьшее значение, допустимое для данных типа п)оиЬ1е нан Значение, не являющееся числом Значение, представляющее минус бесконечность Значение, представляющее плюс бесконечность 736 Часть П.
Библиотека 0(г Каждый из этих конструкторов создает объект типа Ресбюа1 из значения указанного типа. Кроме того, объект типа Ресфп)а1 может быть создан из отдельно указываемых составляющих с помощью следующего конструктора. ривггс Ресгиа1(гпг 1о, гпг юЫ, 1пг Лз, Ьоо1 Гва)едаг1ее, Ьуге вса1е) Десятичное значение состоит из трех частей.
Первую часть составляет 96-разрядное целое значение, вторую — флаг знака, третью — масштабный коэффициент. В частности, 96-разрядное целое значение передается конструктору тремя 32-разрядными фрагментами с помощью параметров 1о, тъс( и ЛТ; знак флага — с помощью параметра 1вь)еда Съуе, причем логическое значение Еа1ве этого параметра обозначает положительное число, тогда как логическое значение сгпе обозначает отрицательное число; а масштабный коэффициент — с помощью параметра вса1е, принимающею значения от 0 до 28.
Этот коэффициент обозначает степень числа 10 (т.е. 10""'), на которую делится число для получения его дробной части. Вместо того чтобы передавать каждую составляющую объекта типа Рес гюа1 отдельно, все его составляющие можно указать в массиве, используя следуюгции конструктор. рпЬ11с Ресгиа1(1пд(] Ьзгв) Три первых элемента типа фиг в массиве ЬЕ С в содержат 96разрядное целое значение; 31-й разряд содержимого элемента Ьбсв [3] обозначает флаг знака (Π— положительное число, 1 — отрицательное число); а в разрядах 16 — 23 содержится масштабный коэффициент.
В структуре Ресфюа1 реализуются следующие интерфейсы: 1СоюрагаЬ1е, 1СопграгаЬ1е<с)есгюа1>, 1СопчегС1Ь1е, 1рогтаггаЬ1е, 1Е<(пагаЬ1е<с)ес1п)а1>, атакже 1Ревег1а11заггопСа11Ьас)с. В приведенном ниже примере программы значение типа с(ес1юа1 формируется вручную. Сформировать десятичное число вручную. о*гид Яувсеи; с1авв Ссеагеоес ( вгад1с чего Иа1п() ( Сесгиа1 с( = пем Сесгиа1(12345, О, О, Га1ве, 2) Сои во1е. Хггдеъгпе (С); ) Эта программа дает следующий результат.
123.45 В данном примере значение 96-разрядного целого числа равно 12343. У него положительный знак и два десятичных разряда в дробной части. Методы, определенные в структуре Ресфва1, приведены в табл. 21.7, а поля— в табл. 21.8. Кроме того, в структуре Рес1п)а1 определяется обширный ряд операторов и преобразований, позволяющих использовать десятичные значения вместе со значениями других типов в выражениях.
Правила, устанавливающие порядок присваивания десятичных значений и их применения в выражениях, представлены в главе 3. Таблица 21.7. Методы, определенные в структуре Весдва1 Назначение Метод рпЬ11с очес субе Ьоо1 Едца1я(оЬуесС ча1ие) рпЫ1с япапфс бес1ва1 Абб(бес1ва1 б1, бесува1 б2) рпЫ1с ятатъс бес1ва1 Се110пд ( б) рпЫ1с ятаСТс Тпт Соврасе(бесува1 б1, бесдва1 б2) рпЫ1с 1пС СовратеТо(оЬуесп ча1ие) рпЫТс Тпт СоврасеТо(бесува1 ча1ие) риЬ11с яяатдс бес1ва1 Руч1бе (бес1ва1 б1, бесдва1 б2) рпЬ11с Ьоо1 Едпа1я (бесува1 ча1ие) рпЫТс ясасъс Ьоо1 Едпа1я(бесува1 б1, бесдва1 б2) раус ятаСТс бес1ва1 Е1оос(бесува1 б) рпЫ1с ягаСТс бесзва1 ЕтовОАСсгсепсу(1опд су) Глава 21. Пространство имен Зуз1егп 737 Возвращает значение б1 а с(2 Возвращает наименьшее целое, которое представлено в виде значения типа бесува1 и не меньше б.
Так, если б равно 1,02, метод Се111пд () возвращает значение 2,0. А если б равно -1,02, то метод Се111пд () возвращает значение -1 Сравнивает числовое значение бз со значением б2. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если бд меньше б2; и, наконец, положительное значение, если б1 больше б2 Сравнивает числовое значение вызывающего объекта со значением т а1се.
Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец положительное значение, если вызывающий ооъекг имеет большее значение Сравнивает числовое значение вызывающего обьекта со значением ча1 се. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значение Возвращает частное от деления с1/ б2 Возвращает логическое значение сспе, если значение вызывающего объекта равно значе- нию ча1ие Возвращает логическое значение сспе, если значение вызывающего объекта равно значе- нию ча1ие Возвращает логическое значение сспе, если если с1 равно б2 Возвращает наибольшее целое, которое пред- ставлено в виде значения типа бес1ва1 и не больше б Так, если б равно 1,02, метод Е1оос ( ) возвращает значение 1,0.
А если б равно -1,02, метод Е1оос (') возвращает значение -2 Преобразует значение су из формата денеж- ной единицы, применяемого в компоненте 0ЬЕ Ац(огпа1)оп, в его десятичный эквивалент и воз- вращает полученный результат П одолжение табл. 21.7 Назначение Метод 738 Часть Н. Библиотека О(г риЫ1с япапъс с б[) ОеГВ1пя (с[ес1ва1 с() риЫ1с оиегг1с(е Тпп СегвяяЬСос)е() риЬ11с ТуреСобе СеГТуреСос(е() риЫ1с ягас1с с(ес1ва1 Ми111р1у(с)ес1ва1 с)1, с(ес1ва1 с(2) риЫТс япагзс Вес1ва1 Иестапе(с)ес1ва1 б) риЫгс ясас1с Вес1вя1 Рагяс(ягг1пст я) риЫТс япяпзс с(ес1ва1 Рагяе (япг1пд я, 1РогваГРгоч1с)ег ргои18ег) риЫ1с ягаг1с с(ес1ва1 Рагяе (япг1пст я, ИивЬегьпу1ея ясу1ея) риЫ1с япасзс с)ес1ва1 Рагяе(япгдпд я, ИивЬегБГу1ея ягу1ея, 11огваГРгоч1с(ег ргоо1с(ег) риЫ1с япапзс с(ес1ва1 Вевазпс)ег(с)ес1вя1 с(1, с[ес1ва1 с)2) риЫ1с ягагзс Вес1ва1 Воипс((с)ес1вя1 с() риЫТс япапзс с)ес1ва1 йоипс((с)ес1ва1 с(, Тпп с)ес1ва1я) Возвращает двоичное представление значения с( в виде массива типа Тпп.
Организация этого массива описана в тексте настоящего раздела Возвращает хеш-код для вызывающего объекта Возвращает значение из перечисления ТуреСобе для структуры Эес1ва1, т.е. ТуреСос[е.рес1ва1 Возвращает произведение Ж * с(2 Возвращает значение -8 Возвращает двоичный эквивалент числа, заданного в виде символьной строки я. Если в строке не представлено числовое значение типа с)ес1вя1, то генерируется исключение Возвращает двоичный эквивалент числа, заданного в виде символьной строки я, с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром ргои1с(ег. Если в строке не представлено числовое значение типа с)ес1вя1, то генерируется исключение Возвращает двоичный эквивалент числа, заданного в виде символьной строки я, с использованием данных о стилях, определяемых параметром я Су1яя.