Класс CComCurrency
CComCurrency
имеет методы и операторы для создания объекта и управления ими CURRENCY
.
Синтаксис
class CComCurrency;
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CComCurrency::CComCurrency |
Конструктор объекта CComCurrency . |
Открытые методы
Имя | Описание |
---|---|
CComCurrency::GetCurrencyPtr |
Возвращает адрес элемента данных m_currency . |
CComCurrency::GetFraction |
Вызовите этот метод для возврата дробной части объекта CComCurrency . |
CComCurrency::GetInteger |
Вызовите этот метод для возврата целой части объекта CComCurrency . |
CComCurrency::Round |
Вызовите этот метод для округления объекта CComCurrency до ближайшего целого значения. |
CComCurrency::SetFraction |
Вызовите этот метод для установки дробной части объекта CComCurrency . |
CComCurrency::SetInteger |
Вызовите этот метод для установки целой части объекта CComCurrency . |
Общедоступные операторы
Имя | Описание |
---|---|
CComCurrency::operator - |
Этот оператор используется для вычитания объекта CComCurrency . |
CComCurrency::operator != |
Проверяет неравенство двух объектов CComCurrency . |
CComCurrency::operator * |
Этот оператор используется для умножения объекта CComCurrency . |
CComCurrency::operator *= |
Этот оператор используется для умножения объекта CComCurrency и назначения ему результата. |
CComCurrency::operator / |
Этот оператор используется для деления объекта CComCurrency . |
CComCurrency::operator /= |
Этот оператор используется для деления объекта CComCurrency и назначения ему результата. |
CComCurrency::operator + |
Этот оператор используется для сложения объекта CComCurrency . |
CComCurrency::operator += |
Этот оператор используется для сложения объекта CComCurrency и назначения ему результата. |
CComCurrency::operator < |
Этот оператор сравнивает два объекта CComCurrency , чтобы определить меньший из них. |
CComCurrency::operator <= |
Этот оператор сравнивает два объекта CComCurrency , чтобы определить равенство или меньший из них. |
CComCurrency::operator = |
Этот оператор присваивает объекту CComCurrency новое значение. |
CComCurrency::operator -= |
Этот оператор используется для вычитания объекта CComCurrency и назначения ему результата. |
CComCurrency::operator == |
Этот оператор сравнивает два объекта CComCurrency на равенство. |
CComCurrency::operator > |
Этот оператор сравнивает два объекта CComCurrency , чтобы определить больший из них. |
CComCurrency::operator >= |
Этот оператор сравнивает два объекта CComCurrency , чтобы определить равенство или больший из них. |
CComCurrency::operator CURRENCY |
Приведение CURRENCY объекта. |
Общедоступные члены данных
Имя | Описание |
---|---|
CComCurrency::m_currency |
Переменная, созданная CURRENCY экземпляром класса. |
Замечания
CComCurrency
— это оболочка для CURRENCY
типа данных. CURRENCY
реализуется как 8-байтовое целочисленное целое число, масштабируемое на 10 000. Это масштабирование дает фиксированное число с 15 цифрами слева от десятичной запятой и 4 цифры справа. CURRENCY
Тип данных полезен для вычислений, связанных с деньгами, или для любых вычислений с фиксированной точкой, где важна точность.
Оболочка CComCurrency
реализует арифметические операции, назначения и сравнения для этого типа фиксированной точки. Поддерживаемые приложения были выбраны для управления ошибками округления, которые могут возникнуть во время вычислений с фиксированной запятой.
Объект CComCurrency
предоставляет доступ к числам с обеих сторон десятичной запятой в виде двух компонентов: целочисленного компонента, который сохраняет значение слева от десятичной точки, а также дробный компонент, который сохраняет значение справа от десятичной запятой. Дробный компонент хранится внутри как целочисленное значение между -9999 (CY_MIN_FRACTION
) и +9999 (CY_MAX_FRACTION
). Метод CComCurrency::GetFraction
возвращает значение, масштабируемое по коэффициенту 10000 (CY_SCALE
).
При указании целочисленных и дробных компонентов CComCurrency
объекта помните, что дробный компонент является числом в диапазоне от 0 до 9999. Это важно при работе с валютой, такой как доллар США. Суммы доллара обычно выражаются с использованием только двух значимых цифр после десятичной запятой. Несмотря на то, что последние две цифры не отображаются, их необходимо учитывать.
Значение | Возможные значения CComCurrency |
---|---|
10,50 долл. США | CComCurrency(10,5000) или CComCurrency(10.50) |
$10.05 | CComCurrency(10,500) или CComCurrency(10.05) |
Значения CY_MIN_FRACTION
, CY_MAX_FRACTION
и CY_SCALE
определяются в atlcur.h.
Требования
Заголовок: atlcur.h
CComCurrency::CComCurrency
Конструктор.
CComCurrency() throw();
CComCurrency(const CComCurrency& curSrc) throw();
CComCurrency(CURRENCY cySrc) throw();
CComCurrency(DECIMAL dSrc);
CComCurrency(ULONG ulSrc);
CComCurrency(USHORT usSrc);
CComCurrency(CHAR cSrc);
CComCurrency(DOUBLE dSrc);
CComCurrency(FLOAT fSrc);
CComCurrency(LONG lSrc);
CComCurrency(SHORT sSrc);
CComCurrency(BYTE bSrc);
CComCurrency(LONGLONG nInteger, SHORT nFraction);
explicit CComCurrency(LPDISPATCH pDispSrc);
explicit CComCurrency(const VARIANT& varSrc);
explicit CComCurrency(LPCWSTR szSrc);
explicit CComCurrency(LPCSTR szSrc);
Параметры
curSrc
Существующий объект CComCurrency
.
cySrc
Переменная типа CURRENCY
.
bSrc
, dSrc
, fSrc
lSrc
sSrc
ulSrc
usSrc
Начальное значение, заданное переменной-члену m_currency
.
cSrc
Символ, содержащий начальное значение, заданное переменной-членом m_currency
.
nInteger
, nFraction
Целочисленные и дробные компоненты начальной денежной стоимости. Дополнительные сведения см. в обзоре CComCurrency
.
pDispSrc
Указатель IDispatch
.
varSrc
Переменная типа VARIANT
. Языковой стандарт текущего потока используется для преобразования.
szSrc
Строка Юникода или ANSI, содержащая начальное значение. Языковой стандарт текущего потока используется для преобразования.
Замечания
Конструктор задает начальное значение CComCurrency::m_currency
и принимает широкий спектр типов данных, включая целые числа, строки, числа с плавающей запятой, CURRENCY
переменные и другие CComCurrency
объекты. Если значение не задано, m_currency
имеет значение 0.
Если возникает ошибка, например переполнение, конструкторы не имеют пустой спецификации исключений (throw()
) вызов AtlThrow
с HRESULT
описанием ошибки.
При использовании с плавающей запятой или двойных значений для назначения значения помните, что CComCurrency(10.50)
эквивалентно CComCurrency(10,5000)
значению, а не CComCurrency(10,50)
.
CComCurrency::GetCurrencyPtr
Возвращает адрес элемента данных m_currency
.
CURRENCY* GetCurrencyPtr() throw();
Возвращаемое значение
Возвращает адрес m_currency
элемента данных
CComCurrency::GetFraction
Вызовите этот метод, чтобы вернуть дробный компонент CComCurrency
объекта.
SHORT GetFraction() const;
Возвращаемое значение
Возвращает дробный компонент m_currency
элемента данных.
Замечания
Дробный компонент — это 4-разрядное целочисленное значение от -9999 (CY_MIN_FRACTION
) до +9999 (CY_MAX_FRACTION
). GetFraction
возвращает это значение, масштабируемое на 10000 (CY_SCALE
). Значения CY_MIN_FRACTION
, CY_MAX_FRACTION
и CY_SCALE
определяются в atlcur.h.
Пример
CComCurrency cur(10, 5000);
int nFract;
nFract = cur.GetFraction();
ATLASSERT(nFract == 5000);
CComCurrency::GetInteger
Вызовите этот метод, чтобы получить целый компонент CComCurrency
объекта.
LONGLONG GetInteger() const;
Возвращаемое значение
Возвращает целый m_currency
компонент элемента данных.
Пример
CComCurrency cur(10, 5000);
LONGLONG nInteger;
nInteger = cur.GetInteger();
ATLASSERT(nInteger == 10);
CComCurrency::m_currency
Элемент CURRENCY
данных.
CURRENCY m_currency;
Замечания
Этот элемент содержит доступ к валюте и управляется методами этого класса.
CComCurrency::operator -
Этот оператор используется для вычитания объекта CComCurrency
.
CComCurrency operator-() const;
CComCurrency operator-(const CComCurrency& cur) const;
Параметры
cur
Объект CComCurrency
.
Возвращаемое значение
CComCurrency
Возвращает объект, представляющий результат вычитания. Если возникает ошибка, например переполнение, этот оператор вызывается AtlThrow
с HRESULT
описанием ошибки.
Пример
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 - CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(6, 0));
CComCurrency::operator !=
Этот оператор сравнивает два объекта для неравенства.
bool operator!= (const CComCurrency& cur) const;
Параметры
cur
Сравниваемый объект CComCurrency
.
Возвращаемое значение
Возвращает значение TRUE
, если сравниваемый элемент не равен объекту CComCurrency
; в противном случае FALSE
.
Пример
CComCurrency cur1(10, 5000), cur2(10, 5001);
ATLASSERT(cur1 != cur2);
CComCurrency::operator *
Этот оператор используется для умножения объекта CComCurrency
.
CComCurrency operator*(long nOperand) const;
CComCurrency operator*(const CComCurrency& cur) const;
Параметры
nOperand
Коэффициент.
cur
Объект, CComCurrency
используемый в качестве умножения.
Возвращаемое значение
CComCurrency
Возвращает объект, представляющий результат умножения. Если возникает ошибка, например переполнение, этот оператор вызывается AtlThrow
с HRESULT
описанием ошибки.
Пример
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 * 2;
ATLASSERT(cur2 == CComCurrency(21, 0));
CComCurrency::operator *=
Этот оператор используется для умножения объекта CComCurrency
и назначения ему результата.
const CComCurrency& operator*= (long nOperand);
const CComCurrency& operator*= (const CComCurrency& cur);
Параметры
nOperand
Коэффициент.
cur
Объект, CComCurrency
используемый в качестве умножения.
Возвращаемое значение
Возвращает обновленный CComCurrency
объект. Если возникает ошибка, например переполнение, этот оператор вызывается AtlThrow
с HRESULT
описанием ошибки.
Пример
CComCurrency cur(10, 5000);
cur *= 2;
ATLASSERT(cur == CComCurrency(21, 0));
CComCurrency::operator /
Этот оператор используется для деления объекта CComCurrency
.
CComCurrency operator/(long nOperand) const;
Параметры
nOperand
Делитель.
Возвращаемое значение
CComCurrency
Возвращает объект, представляющий результат деления. Если разделитель равен 0, произойдет сбой утверждения.
Пример
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 / 10;
ATLASSERT(cur2 == CComCurrency(1, 500));
CComCurrency::operator /=
Этот оператор используется для деления объекта CComCurrency
и назначения ему результата.
const CComCurrency& operator/= (long nOperand);
Параметры
nOperand
Делитель.
Возвращаемое значение
Возвращает обновленный CComCurrency
объект. Если разделитель равен 0, произойдет сбой утверждения.
Пример
CComCurrency cur(10, 5000);
cur /= 10;
ATLASSERT(cur == CComCurrency(1, 500));
CComCurrency::operator +
Этот оператор используется для сложения объекта CComCurrency
.
CComCurrency operator+(const CComCurrency& cur) const;
Параметры
cur
Объект CComCurrency
, добавляемый в исходный объект.
Возвращаемое значение
CComCurrency
Возвращает объект, представляющий результат добавления. Если возникает ошибка, например переполнение, этот оператор вызывается AtlThrow
с HRESULT
описанием ошибки.
Пример
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 + CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(15, 0));
CComCurrency::operator +=
Этот оператор используется для сложения объекта CComCurrency
и назначения ему результата.
const CComCurrency& operator+= (const CComCurrency& cur);
Параметры
cur
Объект CComCurrency
.
Возвращаемое значение
Возвращает обновленный CComCurrency
объект. Если возникает ошибка, например переполнение, этот оператор вызывается AtlThrow
с HRESULT
описанием ошибки.
Пример
CComCurrency cur(10, 2500);
cur += CComCurrency(4, 2500);
ATLASSERT(cur == CComCurrency(14, 5000));
CComCurrency::operator <
Этот оператор сравнивает два объекта CComCurrency
, чтобы определить меньший из них.
bool operator<(const CComCurrency& cur) const;
Параметры
cur
Объект CComCurrency
.
Возвращаемое значение
Возвращает значение TRUE
, если первый объект меньше второго, FALSE
в противном случае.
Пример
CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 < cur2);
CComCurrency::operator <=
Этот оператор сравнивает два объекта CComCurrency
, чтобы определить равенство или меньший из них.
bool operator<= (const CComCurrency& cur) const;
Параметры
cur
Объект CComCurrency
.
Возвращаемое значение
Возвращает значение TRUE
, если первый объект меньше или равен второму, FALSE
в противном случае.
Пример
CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 <= cur2);
CComCurrency::operator =
Этот оператор присваивает объекту CComCurrency
новое значение.
const CComCurrency& operator= (const CComCurrency& curSrc) throw();
const CComCurrency& operator= (CURRENCY cySrc) throw();
const CComCurrency& operator= (FLOAT fSrc);
const CComCurrency& operator= (SHORT sSrc);
const CComCurrency& operator= (LONG lSrc);
const CComCurrency& operator= (BYTE bSrc);
const CComCurrency& operator= (USHORT usSrc);
const CComCurrency& operator= (DOUBLE dSrc);
const CComCurrency& operator= (CHAR cSrc);
const CComCurrency& operator= (ULONG ulSrc);
const CComCurrency& operator= (DECIMAL dSrc);
Параметры
curSrc
Объект CComCurrency
.
cySrc
Переменная типа CURRENCY
.
sSrc
, fSrc
lSrc
bSrc
usSrc
dSrc
cSrc
ulSrc
dSrc
Числовое значение для назначения объекту CComCurrency
.
Возвращаемое значение
Возвращает обновленный CComCurrency
объект. Если возникает ошибка, например переполнение, этот оператор вызывается AtlThrow
с HRESULT
описанием ошибки.
Пример
CComCurrency cur1, cur2(10, 5000);
CURRENCY cy;
// Copying one object to another
cur1 = cur2;
// Using the CURRENCY data type
cy.int64 = 105000;
cur1 = cy;
ATLASSERT(cur1 == cur2);
CComCurrency::operator -=
Этот оператор используется для вычитания объекта CComCurrency
и назначения ему результата.
const CComCurrency& operator-= (const CComCurrency& cur);
Параметры
cur
Объект CComCurrency
.
Возвращаемое значение
Возвращает обновленный CComCurrency
объект. Если возникает ошибка, например переполнение, этот оператор вызывается AtlThrow
с HRESULT
описанием ошибки.
Пример
CComCurrency cur(10, 5000);
cur -= CComCurrency(4, 5000);
ATLASSERT(cur == CComCurrency(6, 0));
CComCurrency::operator ==
Этот оператор сравнивает два объекта CComCurrency
на равенство.
bool operator== (const CComCurrency& cur) const;
Параметры
cur
Объект CComCurrency
, подлежащий сравнению.
Возвращаемое значение
Возвращает значениеTRUE
, если объекты равны (то есть m_currency
члены данных, целочисленные и дробные, в обоих объектах имеют одно и то же значение). FALSE
Пример
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1;
ATLASSERT(cur1 == cur2);
CComCurrency::operator >
Этот оператор сравнивает два объекта CComCurrency
, чтобы определить больший из них.
bool operator>(const CComCurrency& cur) const;
Параметры
cur
Объект CComCurrency
.
Возвращаемое значение
Возвращает значение TRUE
, если первый объект больше второго, FALSE
в противном случае.
Пример
CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 > cur2);
CComCurrency::operator >=
Этот оператор сравнивает два объекта CComCurrency
, чтобы определить равенство или больший из них.
bool operator>= (const CComCurrency& cur) const;
Параметры
cur
Объект CComCurrency
.
Возвращаемое значение
Возвращает значение TRUE
, если первый объект больше или равен второму, FALSE
в противном случае.
Пример
CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 >= cur2);
CComCurrency::operator CURRENCY
Эти операторы используются для приведения CComCurrency
объекта к типу CURRENCY
данных.
operator CURRENCY&() throw();
operator const CURRENCY&() const throw();
Возвращаемое значение
Возвращает ссылку на CURRENCY
объект.
Пример
CComCurrency cur(10, 5000);
CURRENCY cy = static_cast<CURRENCY>(cur); // Note that explicit cast is not necessary
ATLASSERT(cy.int64 == 105000);
CComCurrency::Round
Вызовите этот метод для округления валюты до указанного числа десятичных разрядов.
HRESULT Roundint nDecimals);
Параметры
nDecimals
Число цифр, к которым m_currency
будет округлено, в диапазоне от 0 до 4.
Возвращаемое значение
Возвращает успешность S_OK
или ошибку HRESULT
при сбое.
Пример
CComCurrency cur(10, 1234);
cur.Round(3);
ATLASSERT(cur.GetFraction() == 1230);
CComCurrency::SetFraction
Вызовите этот метод для установки дробной части объекта CComCurrency
.
HRESULT SetFraction(SHORT nFraction);
Параметры
nFraction
Значение для назначения дробного компонента m_currency
элемента данных. Знак дробного компонента должен совпадать с целым компонентом, а значение должно находиться в диапазоне –9999 (CY_MIN_FRACTION
) до +9999 ().CY_MAX_FRACTION
Возвращаемое значение
Возвращает успешность S_OK
или ошибку HRESULT
при сбое.
Пример
CComCurrency cur(10, 0);
cur.SetFraction(5000);
ATLASSERT(CComCurrency(10, 5000) == cur);
CComCurrency::SetInteger
Вызовите этот метод для установки целой части объекта CComCurrency
.
HRESULT SetInteger(LONGLONG nInteger);
Параметры
nInteger
Значение, назначенное целочисленной компоненту m_currency
элемента данных. Знак целочисленного компонента должен соответствовать признаку существующего дробного компонента.
nInteger
должен находиться в диапазоне CY_MIN_INTEGER
до CY_MAX_INTEGER
,включаемого. Эти значения определены в atlcur.h.
Возвращаемое значение
Возвращает успешность S_OK
или ошибку HRESULT
при сбое.
Пример
CComCurrency cur(0, 5000);
cur.SetInteger(10);
ATLASSERT(CComCurrency(10, 5000) == cur);