1629295407-c61bfe4caba98380ea3e7cdae6295416 (846200), страница 94
Текст из файла (страница 94)
Наиболее частоиспользуются следующие шесть:public Decimal(int v)public Decimal(uint v)public Decimal(long v)514Часть II. Библиотека C#public Decimal(ulong v)public Decimal(float v)public Decimal(double v)Каждый из перечисленных конструкторов создает Decimal-объект на основезаданного значения.Decimal-объект также можно создать, указав его составляющие при вызовеследующего конструктора:public Decimal(int low, int middle, int high,bool signFlag, byte scaleFactor)Значение типа decimal состоит из трех частей. Первая представляет собой 96разрядное целое число, вторая — флаг знака и третья — коэффициент масштабирования.96-разрядное целое число передается в 32-разрядные участки памяти с помощьюпараметров low, middle и high.
Знак передается через параметр signFlag, которыйустанавливается равным значению false для положительного числа и значению true —для отрицательного. Коэффициент масштабирования передается посредством параметраscaleFactor, который должен иметь значение в диапазоне от 0 до 28. Этот коэффициентзадает степень числа 10 (т.е. 10scaleFactor), на которую делится число для получения егодробной части.Вместо того чтобы передавать каждый компонент в отдельности, можно задатьсоставные части Decimal-объекта в массиве целых чисел. В этом случае используйтеследующий конструктор:public Decimal(int[] parts)Первые три int-значения в параметре parts содержат 96-разрядное целое число.31-й разряд элемента parts[3] содержит флаг числа (нуль — для положительного и 1 —для отрицательного), а в разрядах 16-23 хранится масштабный коэффициент.В структуре Decimal реализованы следующие интерфейсы: IComparable,IConvertible и IFormattable.Рассмотрим пример создания значения типа decimal “вручную”.// Создание decimal-значения "вручную".using System;class CreateDec {}public static void Main() {decimal d = new decimal(1234 5, 0, 0, false, 2);Console.WriteLine(d);}Результат выполнения этой программы таков:123.45В этом примере значение 96-разрядного целого числа равно 12345, Это число —положительное и имеет два десятичных разряда.Методы, определенные в структуре Decimal, приведены в табл.
19.7, а поля — втабл. 19.8. В структуре Decimal также определено множество операторов ипреобразований, позволяющих совместно использовать decimal-значения в выражениях сдругими числовыми типами. Правила использования значений типа decimal ввыражениях и инструкциях присваивания описаны в главе 3.Глава 19.
Пространство имен System515Таблица 19.7. Методы, определенные в структуре DecimalМетодОписаниеpublic static decimal Add(decimal v1,decimal v2)public static int CompareTo(decimal v1,decimal v2)Возвращает значение v1 + v2public int CompareTo(object v)public static decimal Divide(decimal v1,decimal v2)public override bool Equals(object v)public static bool Equals(decimal v1,decimal v2)public static decimal Floor(decimal v)public static decimalFromOACurrency(long v)public static int[]GetBits(decimal v)public override intGetHashCode()public TypeCodeGetTypeCode()public static decimalMultiply(decimal v1,decimal v2)public static decimalNegate(decimal v)public static decimalParse(string str)public static decimal Parse(string str,IFormatProvider fmtpvdr)516Сравнивает числовые значения параметров v1 и v2.Возвращает нуль, если сравниваемые значения равны.Возвращает отрицательное число, если v1 меньше v2, и —положительное, если v1 больше v2Сравнивает числовое значение вызывающего объекта созначением параметра v.
Возвращает нуль, еслисравниваемые значения равны. Возвращает отрицательноечисло, если вызывающий объект имеет меньшее значение,и положительное, если вызывающий объект имеет большеезначениеВозвращает значение v1 / v2Возвращает значение ИСТИНА, если значениевызывающего объекта равно значению параметра vВозвращает значение ИСТИНА, если v1 равно v2Возвращает наибольшее целое число (представленное ввиде значения типа decimal), которое не большепараметра v.
Например, при v, равном 1.02, метод Floor()возвратит 1.0. А при v, равном -1.02, метод Floor()возвратит -2Преобразует значение, предоставленное приложением OLEAutomation и переданное в параметре v, в его decimalэквивалент и возвращает результатВозвращает двоичное представление значения параметра vи возвращает его в массиве int-элементов. Организацияэтого массива описана в тексте этого разделаВозвращает хеш-код для вызывающего объектаВозвращает значение перечисления TypeCode дляструктуры Decimal, т.е.
TypeCode.DecimalВозвращает значение v1 * v2Возвращает значение -vВозвращает двоичный эквивалент строковогопредставления числа, заданного в параметре str. Еслисодержимое строки не представляет значение типаdecimal, генерируется исключениеВозвращает двоичный эквивалент строковогопредставления числа, заданного в параметре str сиспользованием форматов данных (присущих конкретномуестественному языку, диалекту или территориальномуобразованию), заданных посредством параметра fmtpvdr.Если содержимое строки не представляет значение типаdecimal, генерируется исключениеЧасть II. Библиотека C#Продолжение табл.
19.7МетодОписаниеpublic static decimal Parse(string str,MumberStyles styles)Возвращает двоичный эквивалент строковогопредставления числа, заданного в параметре str, сиспользованием информации стилевого характера,заданной в параметре styles, Если содержимое строки непредставляет значение типа decimal, генерируетсяисключениеВозвращает двоичный эквивалент строковогопредставления числа, заданного в параметре str, сиспользованием информации стилевого характера,заданной в параметре styles, а также форматов данных{присущих конкретному естественному языку, диалекту илитерриториальному образованию), заданных посредствомпараметра fmtpvdr. Если содержимое строки непредставляет значение типа decimal, генерируетсяисключениеВозвращает остаток от целочисленного деления v1 / v2public static decimal Parse(string str,NumberStyles styles,IFormatProvider fmtpvdr)public static decimalRemainder(decimal v1,decimal v2)public static decimal Round(decimal v,int decPlaces)public static decimalSubtract(decimal v1,decimal v2)public static byte ToByte(decimal v)public static doubleToDouble(decimal v)public static short ToInt16(decimal v)public static int ToInt32(decimal v)public static longToInt64(decimal v)public static longToOACurrency(decimal v)public static sbyte ToSByte(decimal v)public static float ToSingle(decimal v)Возвращает значение v, округленное до числа, количествоцифр дробной части которого равно значению параметраdecPlaces, которое должно находиться в диапазоне 0-28Возвращает значение v1 - v2Возвращает byte-эквивалент параметра v.
Дробная частьотбрасывается. Если значение параметра v не попадает вдиапазон представления чисел, соответствующий типуbyte, генерируется исключение типа OverflowExceptionВозвращает double-эквивалент параметра v. При этомвозможна потеря точности, поскольку тип double имеетменьше значащих цифр, чем тип decimalВозвращает short-эквивалент параметра v. Дробная частьотбрасывается.
Если значение параметра v не попадает вдиапазон представления чисел, соответствующий типуshort, генерируется исключение типа OverflowExceptionВозвращает int-эквивалент параметра v. Дробная частьотбрасывается. Если значение параметра v не попадает вдиапазон представления чисел, соответствующий типу int,генерируется исключение типа OverflowExceptionВозвращает long-эквивалент параметра v. Дробная частьотбрасывается, Если значение параметра v не попадает вдиапазон представления чисел, соответствующий типуlong, генерируется исключение типа OverflowExceptionПреобразует значение параметра v в эквивалентноезначение OLE Automation и возвращает результатВозвращает sbyte-эквивалент параметра v.
Дробная частьотбрасывается. Если значение параметра v не попадает вдиапазон представления чисел, соответствующий типуsbyte, генерируется исключение типа OverflowExceptionВозвращает float-эквивалент параметра v. При этомвозможна потеря точности, поскольку тип float имеетменьше значащих цифр, чем тип decimalГлава 19. Пространство имен System517Окончание табл. 19.7МетодОписаниеpublic override stringToString()public stringToString(string format)public string ToString(IFormatProvider fmtpvdr)Возвращает строковое представление значениявызывающего объектаВозвращает строковое представление значениявызывающего объекта в соответствии с требованиямиформатирующей строки, переданной в параметре formatВозвращает строковое представление значениявызывающего объекта с использованием форматов данных(присущих конкретному естественному языку, диалекту илитерриториальному образованию), заданных посредствомпараметра fmtpvdrВозвращает строковое представление значениявызывающего объекта с использованием форматов данных(присущих конкретному естественному языку, диалекту илитерриториальному образованию), заданных посредствомпараметра fmtpvdr, а также форматирующей строки,переданной в параметре formatВозвращает ushort-эквивалент параметра v.
Дробнаячасть отбрасывается. Если значение параметра v непопадает в диапазон представления чисел,соответствующий типу ushort, генерируется исключениетипа OverflowExceptionВозвращает uint-эквивалент параметра v. Дробная частьотбрасывается. Если значение параметра v не попадает вдиапазон представления чисел, соответствующий типуuint, генерируется исключение типа OverflowExceptionВозвращает ulong-эквивалент параметра v. Дробная частьотбрасывается. Если значение параметра v не попадает вдиапазон представления чисел, соответствующий типуulong, генерируется исключение типа OverflowExceptionВозвращает целую часть числа, заданного параметром v.Соответственно, любая дробная часть при этомотбрасываетсяpublic string ToString(string format,IFormatProvider fmtpvdr)public static ushortToUInt16(decimal v)public static uintToUInt32(decimal v)public static ulongToUInt64(decimal v)public static decimalTruncate(decimal v)Таблица 19.8.
Поля, поддерживаемые структурой DecimalПолеОписаниеpublic static readonly decimal MaxValueНаибольшее значение, которое позволяетхранить тип decimalПредставление числа -1 в формате decimalзначенияНаименьшее значение, которое позволяетхранить тип decimalПредставление числа 1 в формате decimalзначенияПредставление числа 0 в формате decimalзначения.public static readonly decimal MinusOnepublic static readonly decimal MinValuepublic static readonly decimal Onepublic static readonly decimal ZeroСтруктура charПожалуй, наиболее используемой (можно сказать, структурой “каждодневногоприменения”) является структура Char. Она предоставляет большое количество методов,которые позволяют обрабатывать символы и определять, к какой категории они относятся.Например, вызвав метод ToUpper(), можно преобразовать строчный символ518Часть II.
Библиотека C#в его прописной эквивалент. А с помощью метода IsDigit() можно определить,является ли анализируемый символ цифрой.Методы, определяемые в структуре Char, перечислены в табл. 19.9. В структуреChar также определены следующие поля:public const char MaxValuepublic const char MinValueОни представляют наибольшее и наименьшее значения, которые может хранитьпеременная типа char.