Classe CComCurrency

CComCurrency tem métodos e operadores para criar e gerenciar um objeto CURRENCY.

Sintaxe

class CComCurrency;

Membros

Construtores públicos

Nome Descrição
CComCurrency::CComCurrency O construtor de um objeto CComCurrency.

Métodos públicos

Nome Descrição
CComCurrency::GetCurrencyPtr Retorna o endereço de um membro de dados m_currency.
CComCurrency::GetFraction Chame esse método para retornar o componente fracionário de um objeto CComCurrency.
CComCurrency::GetInteger Chame esse método para retornar o componente inteiro de um objeto CComCurrency.
CComCurrency::Round Chame esse método para arredondar um objeto CComCurrency para o valor inteiro mais próximo.
CComCurrency::SetFraction Chame esse método para definir o componente fracionário de um objeto CComCurrency.
CComCurrency::SetInteger Chame esse método para definir o componente inteiro de um objeto CComCurrency.

Operadores públicos

Nome Descrição
CComCurrency::operator - Esse operador é usado para executar a subtração em um objeto CComCurrency.
CComCurrency::operator != Compara dois objetos CComCurrency quanto à desigualdade.
CComCurrency::operator * Esse operador é usado para executar a multiplicação em um objeto CComCurrency.
CComCurrency::operator *= Esse operador é usado para executar multiplicação em um objeto CComCurrency e atribuir-lhe o resultado.
CComCurrency::operator / Esse operador é usado para executar a divisão em um objeto CComCurrency.
CComCurrency::operator /= Esse operador é usado para executar a divisão em um objeto CComCurrency e atribuir-lhe o resultado.
CComCurrency::operator + Esse operador é usado para executar a adição em um objeto CComCurrency.
CComCurrency::operator += Esse operador é usado para executar a adição em um objeto CComCurrency e atribuir o resultado ao objeto atual.
CComCurrency::operator < Esse operador compara dois objetos CComCurrency para determinar o menor.
CComCurrency::operator <= Esse operador compara dois objetos CComCurrency para determinar a igualdade ou o menor.
CComCurrency::operator = Esse operador atribui o objeto CComCurrency a um novo valor.
CComCurrency::operator -= Esse operador é usado para executar a subtração em um objeto CComCurrency e atribuir-lhe o resultado.
CComCurrency::operator == Esse operador compara dois objetos CComCurrency quanto à igualdade.
CComCurrency::operator > Esse operador compara dois objetos CComCurrency para determinar o maior.
CComCurrency::operator >= Esse operador compara dois objetos CComCurrency para determinar a igualdade ou o maior.
CComCurrency::operator CURRENCY Converte um objeto CURRENCY.

Membros de dados públicos

Nome Descrição
CComCurrency::m_currency A variável CURRENCY criada pela instância de classe.

Comentários

CComCurrency é um wrapper para o tipo de dados CURRENCY. CURRENCY é implementado como um valor inteiro de complemento de 8 bytes, dimensionado em 10.000. Essa escala fornece um número de ponto fixo com 15 dígitos restantes do ponto decimal e 4 dígitos à direita. O tipo de dados CURRENCY é útil para cálculos que envolvem dinheiro ou para qualquer cálculo de ponto fixo em que a precisão é importante.

O wrapper CComCurrency implementa operações aritméticas, de atribuição e de comparação para esse tipo de ponto fixo. Os aplicativos com suporte foram selecionados para controlar os erros de arredondamento que podem ocorrer durante cálculos de ponto fixo.

O objeto CComCurrency fornece acesso aos números em ambos os lados do ponto decimal na forma de dois componentes: um componente inteiro, que armazena o valor à esquerda do ponto decimal e um componente fracionário, que armazena o valor à direita do ponto decimal. O componente fracionário é armazenado internamente como um valor inteiro entre -9999 (CY_MIN_FRACTION) e +9999 (CY_MAX_FRACTION). O método CComCurrency::GetFraction retorna um valor dimensionado por um fator de 10000 (CY_SCALE).

Ao especificar os componentes inteiros e fracionários de um objeto CComCurrency, lembre-se de que o componente fracionário é um número no intervalo de 0 a 9999. Essa consideração é importante ao lidar com uma moeda como o dólar americano. Valores em dólar são comumente expressos usando apenas dois dígitos significativos após o ponto decimal. Embora os dois últimos dígitos não sejam exibidos, eles devem ser levados em conta.

Valor Possíveis atribuições de CComCurrency
US$10.50 CComCurrency(10,5000) ou CComCurrency(10.50)
US$10.05 CComCurrency(10,500) ou CComCurrency(10.05)

Os valores CY_MIN_FRACTION, CY_MAX_FRACTION e CY_SCALE são definidos em atlcur.h.

Requisitos

Cabeçalho: atlcur.h

CComCurrency::CComCurrency

O construtor .

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);

Parâmetros

curSrc
Um objeto CComCurrency existente.

cySrc
Uma variável do tipo CURRENCY.

bSrc, dSrc, fSrc, lSrc, sSrc, ulSrc, usSrc
O valor inicial fornecido à variável de membro m_currency.

cSrc
Um caractere que contém o valor inicial fornecido à variável de membro m_currency.

nInteger, nFraction
Os componentes inteiros e fracionários do valor monetário inicial. Para mais informações, confira a visão geral de CComCurrency.

pDispSrc
Um ponteiro IDispatch.

varSrc
Uma variável do tipo VARIANT. A localidade do thread atual é usada para executar a conversão.

szSrc
Uma cadeia de caracteres Unicode ou ANSI que contém o valor inicial. A localidade do thread atual é usada para executar a conversão.

Comentários

O construtor define o valor inicial de CComCurrency::m_currency e aceita uma ampla gama de tipos de dados, incluindo inteiros, cadeias de caracteres, números de ponto flutuante, variáveis CURRENCY e outros objetos CComCurrency. Se nenhum valor for fornecido, m_currency será definido como 0.

Se houver um erro, como um estouro, os construtores sem uma especificação de exceção vazia (throw()) chamam (AtlThrow) com um HRESULT que descreve o erro.

Ao usar valores de ponto flutuante ou duplos para atribuir um valor, lembre-se de que CComCurrency(10.50) é equivalente a CComCurrency(10,5000), e não a CComCurrency(10,50).

CComCurrency::GetCurrencyPtr

Retorna o endereço de um membro de dados m_currency.

CURRENCY* GetCurrencyPtr() throw();

Retornar valor

Retorna o endereço de um membro de dados m_currency

CComCurrency::GetFraction

Chame esse método para retornar o componente fracionário do objeto CComCurrency.

SHORT GetFraction() const;

Retornar valor

Retorna o componente fracionário do membro de dados m_currency.

Comentários

O componente fracionário é um valor inteiro de 4 dígitos entre -9999 (CY_MIN_FRACTION) e +9999 (CY_MAX_FRACTION). GetFraction retorna esse valor dimensionado por 10000 (CY_SCALE). Os valores de CY_MIN_FRACTION, CY_MAX_FRACTION e CY_SCALE são definidos em atlcur.h.

Exemplo

CComCurrency cur(10, 5000);
int nFract;
nFract = cur.GetFraction();
ATLASSERT(nFract == 5000);   

CComCurrency::GetInteger

Chame esse método para obter o componente inteiro de um objeto CComCurrency.

LONGLONG GetInteger() const;

Retornar valor

Retorna o componente inteiro do membro de dados m_currency.

Exemplo

CComCurrency cur(10, 5000);
LONGLONG nInteger;
nInteger = cur.GetInteger();
ATLASSERT(nInteger == 10);   

CComCurrency::m_currency

O membro de dados CURRENCY.

CURRENCY m_currency;

Comentários

Esse membro mantém a moeda acessada e manipulada pelos métodos dessa classe.

CComCurrency::operator -

Esse operador é usado para executar a subtração em um objeto CComCurrency.

CComCurrency operator-() const;
CComCurrency operator-(const CComCurrency& cur) const;

Parâmetros

cur
Um objeto CComCurrency.

Retornar valor

Retorna um objeto CComCurrency que representa o resultado da subtração. Se houver um erro, como um estouro, esse operador chamará AtlThrow com um HRESULT descrevendo o erro.

Exemplo

CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 - CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(6, 0));   

CComCurrency::operator !=

Esse operador compara dois objetos para determinar a desigualdade.

bool operator!= (const CComCurrency& cur) const;

Parâmetros

cur
O objeto CComCurrency a ser comparado.

Retornar valor

Retornará TRUE se o item sendo comparado não for igual ao objeto CComCurrency. Caso contrário, retornará FALSE.

Exemplo

CComCurrency cur1(10, 5000), cur2(10, 5001);
ATLASSERT(cur1 != cur2);   

CComCurrency::operator *

Esse operador é usado para executar a multiplicação em um objeto CComCurrency.

CComCurrency operator*(long nOperand) const;
CComCurrency operator*(const CComCurrency& cur) const;

Parâmetros

nOperand
O multiplicador.

cur
O objeto CComCurrency usado como multiplicador.

Retornar valor

Retorna um objeto CComCurrency que representa o resultado da multiplicação. Se houver um erro, como um estouro, esse operador chamará AtlThrow com um HRESULT descrevendo o erro.

Exemplo

CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 * 2;
ATLASSERT(cur2 == CComCurrency(21, 0));   

CComCurrency::operator *=

Esse operador é usado para executar multiplicação em um objeto CComCurrency e atribuir-lhe o resultado.

const CComCurrency& operator*= (long nOperand);
const CComCurrency& operator*= (const CComCurrency& cur);

Parâmetros

nOperand
O multiplicador.

cur
O objeto CComCurrency usado como multiplicador.

Retornar valor

Retorna o objeto atualizado CComCurrency. Se houver um erro, como um estouro, esse operador chamará AtlThrow com um HRESULT descrevendo o erro.

Exemplo

CComCurrency cur(10, 5000);
cur *= 2;
ATLASSERT(cur == CComCurrency(21, 0));   

CComCurrency::operator /

Esse operador é usado para executar a divisão em um objeto CComCurrency.

CComCurrency operator/(long nOperand) const;

Parâmetros

nOperand
O divisor.

Retornar valor

Retorna um objeto CComCurrency que representa o resultado da divisão. Se o divisor for 0, ocorrerá uma falha de asserção.

Exemplo

CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 / 10;
ATLASSERT(cur2 == CComCurrency(1, 500));

CComCurrency::operator /=

Esse operador é usado para executar a divisão em um objeto CComCurrency e atribuir-lhe o resultado.

const CComCurrency& operator/= (long nOperand);

Parâmetros

nOperand
O divisor.

Retornar valor

Retorna o objeto atualizado CComCurrency. Se o divisor for 0, ocorrerá uma falha de asserção.

Exemplo

CComCurrency cur(10, 5000);
cur /= 10;
ATLASSERT(cur == CComCurrency(1, 500));

CComCurrency::operator +

Esse operador é usado para executar a adição em um objeto CComCurrency.

CComCurrency operator+(const CComCurrency& cur) const;

Parâmetros

cur
O objeto CComCurrency a ser adicionado ao objeto original.

Retornar valor

Retorna um objeto CComCurrency que representa o resultado da adição. Se houver um erro, como um estouro, esse operador chamará AtlThrow com um HRESULT descrevendo o erro.

Exemplo

CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 + CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(15, 0));

CComCurrency::operator +=

Esse operador é usado para executar a adição em um objeto CComCurrency e atribuir o resultado ao objeto atual.

const CComCurrency& operator+= (const CComCurrency& cur);

Parâmetros

cur
O objeto CComCurrency.

Retornar valor

Retorna o objeto atualizado CComCurrency. Se houver um erro, como um estouro, esse operador chamará AtlThrow com um HRESULT descrevendo o erro.

Exemplo

CComCurrency cur(10, 2500);
cur += CComCurrency(4, 2500);
ATLASSERT(cur == CComCurrency(14, 5000));

CComCurrency::operator <

Esse operador compara dois objetos CComCurrency para determinar o menor.

bool operator<(const CComCurrency& cur) const;

Parâmetros

cur
Um objeto CComCurrency.

Retornar valor

Retornará TRUE se o primeiro objeto for menor que o segundo. Caso contrário, FALSE.

Exemplo

CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 < cur2);

CComCurrency::operator <=

Esse operador compara dois objetos CComCurrency para determinar a igualdade ou o menor.

bool operator<= (const CComCurrency& cur) const;

Parâmetros

cur
Um objeto CComCurrency.

Retornar valor

Retornará TRUE se o primeiro objeto for menor que ou igual ao segundo. Caso contrário, FALSE.

Exemplo

CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 <= cur2);

CComCurrency::operator =

Esse operador atribui o objeto CComCurrency a um novo valor.

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);

Parâmetros

curSrc
Um objeto CComCurrency.

cySrc
Uma variável do tipo CURRENCY.

sSrc, fSrc, lSrc, bSrc, usSrc, dSrc, cSrc, ulSrc, dSrc
O valor numérico a ser atribuído ao objeto CComCurrency.

Retornar valor

Retorna o objeto atualizado CComCurrency. Se houver um erro, como um estouro, esse operador chamará AtlThrow com um HRESULT descrevendo o erro.

Exemplo

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 -=

Esse operador é usado para executar a subtração em um objeto CComCurrency e atribuir-lhe o resultado.

const CComCurrency& operator-= (const CComCurrency& cur);

Parâmetros

cur
Um objeto CComCurrency.

Retornar valor

Retorna o objeto atualizado CComCurrency. Se houver um erro, como um estouro, esse operador chamará AtlThrow com um HRESULT descrevendo o erro.

Exemplo

CComCurrency cur(10, 5000);
cur -= CComCurrency(4, 5000);
ATLASSERT(cur == CComCurrency(6, 0));

CComCurrency::operator ==

Esse operador compara dois objetos CComCurrency quanto à igualdade.

bool operator== (const CComCurrency& cur) const;

Parâmetros

cur
O objeto CComCurrency a ser comparado.

Retornar valor

Retorna TRUE se os objetos forem iguais (ou seja, os membros de dados m_currency, tanto inteiros quanto fracionários, em ambos os objetos, têm o mesmo valor). Caso contrário, FALSE.

Exemplo

CComCurrency cur1(10, 5000), cur2;
cur2 = cur1;
ATLASSERT(cur1 == cur2);

CComCurrency::operator >

Esse operador compara dois objetos CComCurrency para determinar o maior.

bool operator>(const CComCurrency& cur) const;

Parâmetros

cur
Um objeto CComCurrency.

Retornar valor

Retornará TRUE se o primeiro objeto for maior que o segundo. Caso contrário, FALSE.

Exemplo

CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 > cur2);

CComCurrency::operator >=

Esse operador compara dois objetos CComCurrency para determinar a igualdade ou o maior.

bool operator>= (const CComCurrency& cur) const;

Parâmetros

cur
Um objeto CComCurrency.

Retornar valor

Retornará TRUE se o primeiro objeto é maior ou igual ao segundo; caso contrário; FALSE.

Exemplo

CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 >= cur2);

CComCurrency::operator CURRENCY

Esses operadores são usados para converter um objeto CComCurrency em um tipo de dados CURRENCY.

operator CURRENCY&() throw();
operator const CURRENCY&() const throw();

Retornar valor

Retorna uma referência a um CURRENCY objeto.

Exemplo

CComCurrency cur(10, 5000);
CURRENCY cy = static_cast<CURRENCY>(cur); // Note that explicit cast is not necessary
ATLASSERT(cy.int64 == 105000);

CComCurrency::Round

Chame esse método para arredondar a moeda para um número especificado de casas decimais.

HRESULT Roundint nDecimals);

Parâmetros

nDecimals
O número de dígitos aos quais m_currency será arredondado, no intervalo de 0 a 4.

Retornar valor

Retorna S_OK se houver êxito ou um erro HRESULT se houver falha.

Exemplo

CComCurrency cur(10, 1234);
cur.Round(3);
ATLASSERT(cur.GetFraction() == 1230);   

CComCurrency::SetFraction

Chame esse método para definir o componente fracionário de um objeto CComCurrency.

HRESULT SetFraction(SHORT nFraction);

Parâmetros

nFraction
O valor a ser atribuído ao componente fracionário do membro de dados m_currency. O sinal do componente fracionário deve ser o mesmo que o componente inteiro e o valor deve estar no intervalo de -9999 (CY_MIN_FRACTION) a +9999 (CY_MAX_FRACTION).

Retornar valor

Retorna S_OK se houver êxito ou um erro HRESULT se houver falha.

Exemplo

CComCurrency cur(10, 0);
cur.SetFraction(5000);
ATLASSERT(CComCurrency(10, 5000) == cur);   

CComCurrency::SetInteger

Chame esse método para definir o componente inteiro de um objeto CComCurrency.

HRESULT SetInteger(LONGLONG nInteger);

Parâmetros

nInteger
O valor a ser atribuído ao componente inteiro do membro de dados m_currency. O sinal do componente inteiro deve corresponder ao sinal do componente fracionário existente.

nInteger deve ficar no intervalo de CY_MIN_INTEGER a CY_MAX_INTEGER, inclusive. Esses valores são definidos em atlcur.h.

Retornar valor

Retorna S_OK se houver êxito ou um erro HRESULT se houver falha.

Exemplo

CComCurrency cur(0, 5000);
cur.SetInteger(10);
ATLASSERT(CComCurrency(10, 5000) == cur);   

Confira também

COleCurrency classe
CURRENCY
Visão geral de classe