Поделиться через


Класс 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, fSrclSrcsSrculSrcusSrc
Начальное значение, заданное переменной-члену 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, fSrclSrcbSrcusSrcdSrccSrculSrcdSrc
Числовое значение для назначения объекту 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);   

См. также

Класс COleCurrency
CURRENCY
Общие сведения о классе