public Decimal(int lo, int mid, int hi, bool IsNegative, byte scale)
Десятичное значение состоит из трех частей. Первую часть составляет 96-разрядное целое значение, вторую — флаг знака, третью — масштабный коэффициент. В частности, 96-разрядное целое значение передается конструктору тремя 32-разрядными фрагментами с помощью параметров lo, mid и hi; знак флага — с помощью параметра IsNegative, причем логическое значение falseэтого параметра обозначает положительное число, тогда как логическое значение trueобозначает отрицательное число; а масштабный коэффициент — с помощью параметра scale , принимающего значения от 0 до 28. Этот коэффициент обозначает степень числа 10 (т.е. 10 scale), на которую делится число для получения его дробной части.
Вместо того чтобы передавать каждую составляющую объекта типа Decimal отдельно, все его составляющие можно указать в массиве, используя следующий конструктор.
public Decimal(int[] bits)
Три первых элемента типа int в массиве bits содержат 96-разрядное целое значение; 31-й разряд содержимого элемента bits [3] обозначает флаг знака (0 — положительное число, 1 — отрицательное число); а в разрядах 16-23 содержится масштабный коэффициент.
В структуре Decimal реализуются следующие интерфейсы: IComparable, IComparable, IConvertible, IFormattable, IEquatable, а также IDeserializationCallback.
В приведенном ниже примере программы значение типа decimal формируется вручную.
// Сформировать десятичное число вручную.
using System;
class CreateDec {
static void Main() {
decimal d = new decimal(12345, 0, 0, false, 2);
Console.WriteLine(d);
}
}
Эта программа дает следующий результат.
123.45
В данном примере значение 96-разрядного целого числа равно 12345. У него положительный знак и два десятичных разряда в дробной части.
Методы, определенные в структуре Decimal, приведены в табл.21.7, а поля — в табл. 21.8. Кроме того, в структуре Decimalопределяется обширный ряд операторов и преобразований, позволяющих использовать десятичные значения вместе со значениями других типов в выражениях. Правила, устанавливающие порядок присваивания десятичных значений и их применения в выражениях, представлены в главе 3.
Таблица 21.7. Методы, определенные в структуре Decimal
Метод - Назначение
public static decimal Add(decimal "dl, decimal d2) - Возвращает значение dl + d2
public static decimal Ceiling(d) -Возвращает наименьшее целое, которое представлено в виде значения типа decimalи не меньше d.Так, если dравно 1,02, метод Ceiling()возвращает значение 2,0. А если dравно -1,02, то метод Ceiling()возвращает значение -1
public static int Compare(decimal dl, decimal d2) - Сравнивает числовое значение dl со значением d2. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если dl меньше d2;и, наконец, положительное значение, если dl больше d2
public int CompareTo(object value) Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значение
public int CompareTo(decimal value) - Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значение
public static decimal Divide(decimal dl, decimal d2) - Возвращает частное отделения dl / d2
public bool Equals(decimal value) - Возвращает логическое значение true,если значение вызывающего объекта равно значению value
public override bool Equals(object value) - Возвращает логическое значение true,если значение вызывающего объекта равно значению value
public static bool Equals(decimal dl, decimal d2) - Возвращает логическое значение true,если если dl равно d2
public static decimal Floor(decimal d) -Возвращает наибольшее целое, которое пред ставлено в виде значения типа decimalи не больше d.Так, если dравно 1,02, метод Floor()возвращает значение 1,0. А если dравно -1,02, метод Floor 0возвращает значение -2
Читать дальше