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();
Valor retornado
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;
Valor retornado
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;
Valor retornado
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
.
Valor retornado
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.
Valor retornado
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.
Valor retornado
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.
Valor retornado
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.
Valor retornado
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.
Valor retornado
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.
Valor retornado
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
.
Valor retornado
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
.
Valor retornado
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
.
Valor retornado
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
.
Valor retornado
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
.
Valor retornado
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.
Valor retornado
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
.
Valor retornado
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
.
Valor retornado
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();
Valor retornado
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.
Valor retornado
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
).
Valor retornado
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.
Valor retornado
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);