Clase CComCurrency
CComCurrency
tiene métodos y operadores para crear y administrar un objeto CURRENCY
.
Sintaxis
class CComCurrency;
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CComCurrency::CComCurrency |
El constructor para un objeto CComCurrency . |
Métodos públicos
Nombre | Descripción |
---|---|
CComCurrency::GetCurrencyPtr |
Devuelve la dirección de un miembro de datos m_currency . |
CComCurrency::GetFraction |
Llame a este método para devolver el componente de fracción de un objeto CComCurrency . |
CComCurrency::GetInteger |
Llame a este método para devolver el componente entero de un objeto CComCurrency . |
CComCurrency::Round |
Llame a este método para redondear un objeto CComCurrency al valor entero más cercano. |
CComCurrency::SetFraction |
Llame a este método para establecer el componente de fracción de un objeto CComCurrency . |
CComCurrency::SetInteger |
Llame a este método para establecer el componente entero de un objeto CComCurrency . |
Operadores públicos
Nombre | Descripción |
---|---|
CComCurrency::operator - |
Este operador se usa para restar en un objeto CComCurrency . |
CComCurrency::operator != |
Compara dos objetos CComCurrency para determinar si no son iguales. |
CComCurrency::operator * |
Este operador se usa para multiplicar en un objeto CComCurrency . |
CComCurrency::operator *= |
Este operador se usa para multiplicar en un objeto CComCurrency y asignarle el resultado. |
CComCurrency::operator / |
Este operador se usa para dividir en un objeto CComCurrency . |
CComCurrency::operator /= |
Este operador se utiliza para dividir en un objeto CComCurrency y asignarle el resultado. |
CComCurrency::operator + |
Este operador se usa para sumar en un objeto CComCurrency . |
CComCurrency::operator += |
Este operador se usa para sumar en un objeto CComCurrency y asignar el resultado al objeto actual. |
CComCurrency::operator < |
Este operador compara dos objetos CComCurrency para determinar el menor. |
CComCurrency::operator <= |
Este operador compara dos objetos CComCurrency para determinar si son iguales o cuál es el menor. |
CComCurrency::operator = |
El operador asigna el objeto CComCurrency a un nuevo valor. |
CComCurrency::operator -= |
Este operador se usa para restar en un objeto CComCurrency y asignarle el resultado. |
CComCurrency::operator == |
Este operador compara dos objetos CComCurrency para determinar si son iguales. |
CComCurrency::operator > |
Este operador compara dos objetos CComCurrency para determinar el mayor. |
CComCurrency::operator >= |
Este operador compara dos objetos CComCurrency para determinar si son iguales o cuál es el mayor. |
CComCurrency::operator CURRENCY |
Convierte un objeto CURRENCY . |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CComCurrency::m_currency |
La variable CURRENCY creada por la instancia de clase. |
Comentarios
CComCurrency
es un contenedor para el tipo de datos CURRENCY
. CURRENCY
se implementa como un valor entero, de 8 bytes y de dos complementos, escalado por 10 000. Este escalado proporciona un número de punto fijo con 15 dígitos a la izquierda del separador decimal y cuatro dígitos a la derecha. El tipo de datos CURRENCY
es útil para cálculos monetarios o para los cálculos de punto fijo, donde la precisión es importante.
El contenedor CComCurrency
implementa operaciones aritméticas, de asignación y de comparación para este tipo de punto fijo. Las aplicaciones compatibles se han seleccionado para controlar los errores de redondeo que se pueden producir durante los cálculos de punto fijo.
El objeto CComCurrency
da acceso a los números situados a ambos lados del separador decimal en forma de dos componentes: un componente de número entero que almacena el valor situado a la izquierda del separador decimal y un componente de fracción que almacena el valor situado a la derecha del separador decimal. El componente de fracción se almacena internamente como un valor entero entre -9999 (CY_MIN_FRACTION
) y +9999 (CY_MAX_FRACTION
). El método CComCurrency::GetFraction
devuelve un valor escalado por un factor de 10 000 (CY_SCALE
).
Al especificar los componentes entero y de fracción de un objeto CComCurrency
, recuerde que el componente de fracción es un número de 0 a 9999. Esta consideración es importante cuando se trata de una moneda como el dólar estadounidense. Los importes de dólar se expresan normalmente utilizando solo dos dígitos significativos después del separador decimal. Aunque no se muestren los últimos dos dígitos, se deben tener en cuenta.
Valor | Posibles asignaciones CComCurrency |
---|---|
$10.50 | CComCurrency(10,5000) o CComCurrency(10.50) |
$10.05 | CComCurrency(10,500) o CComCurrency(10.05) |
Los valores CY_MIN_FRACTION
, CY_MAX_FRACTION
y CY_SCALE
se definen en atlcur.h.
Requisitos
Encabezado: atlcur.h
CComCurrency::CComCurrency
Constructor .
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
Objeto CComCurrency
existente.
cySrc
Una variable de tipo CURRENCY
.
bSrc
, dSrc
, fSrc
, lSrc
, sSrc
, , ulSrc
usSrc
Valor inicial proporcionado a la variable miembro m_currency
.
cSrc
Carácter que contiene el valor inicial dado a la variable miembro m_currency
.
nInteger
, nFraction
Los componentes enteros y fraccionarios del valor monetario inicial. Para más información, consulte el tema de información general de CComCurrency
.
pDispSrc
Puntero IDispatch
.
varSrc
Una variable de tipo VARIANT
. La configuración regional del subproceso actual se usa para realizar la conversión.
szSrc
Cadena Unicode o ANSI que contiene el valor inicial. La configuración regional del subproceso actual se usa para realizar la conversión.
Comentarios
El constructor establece el valor inicial de CComCurrency::m_currency
y acepta una amplia gama de tipos de datos, incluidos enteros, cadenas, números de punto flotante, variables CURRENCY
y otros objetos CComCurrency
. Si no se proporciona ningún valor, m_currency
se establece en 0.
Si se produce un error, como un desbordamiento, los constructores que carecen de una especificación de excepción vacía (throw()
) llaman AtlThrow
con una descripción del error HRESULT
.
Al usar valores de punto flotante o doble para asignar un valor, recuerde que CComCurrency(10.50)
es equivalente a CComCurrency(10,5000)
y no CComCurrency(10,50)
.
CComCurrency::GetCurrencyPtr
Devuelve la dirección de un miembro de datos m_currency
.
CURRENCY* GetCurrencyPtr() throw();
Valor devuelto
Devuelve la dirección de un miembro de datos m_currency
.
CComCurrency::GetFraction
Llame a este método para devolver el componente de fracción de un objeto CComCurrency
.
SHORT GetFraction() const;
Valor devuelto
Devuelve el componente fraccionaria del miembro de datos m_currency
.
Comentarios
El componente fraccionario es un valor entero de 4 dígitos entre -9999 (CY_MIN_FRACTION
) y +9999 (CY_MAX_FRACTION
). GetFraction
devuelve este valor escalado en 10 000 (CY_SCALE
). Los valores CY_MIN_FRACTION
, CY_MAX_FRACTION
y CY_SCALE
se definen en atlcur.h.
Ejemplo
CComCurrency cur(10, 5000);
int nFract;
nFract = cur.GetFraction();
ATLASSERT(nFract == 5000);
CComCurrency::GetInteger
Llame a este método para establecer el componente entero de un objeto CComCurrency
.
LONGLONG GetInteger() const;
Valor devuelto
Devuelve el componente entero del miembro de datos m_currency
.
Ejemplo
CComCurrency cur(10, 5000);
LONGLONG nInteger;
nInteger = cur.GetInteger();
ATLASSERT(nInteger == 10);
CComCurrency::m_currency
Miembro de datos CURRENCY
CURRENCY m_currency;
Comentarios
Este miembro contiene la moneda a la que acceden y manipulan los métodos de esta clase.
CComCurrency::operator -
Este operador se usa para restar en un objeto CComCurrency
.
CComCurrency operator-() const;
CComCurrency operator-(const CComCurrency& cur) const;
Parámetros
cur
Un objeto CComCurrency
.
Valor devuelto
Devuelve un objeto CComCurrency
que representa el resultado de la resta. Si se produce un error, como un desbordamiento, este operador llama a AtlThrow
con una HRESULT
descripción del error.
Ejemplo
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 - CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(6, 0));
CComCurrency::operator !=
Este operador compara dos objetos para determinar si son diferentes.
bool operator!= (const CComCurrency& cur) const;
Parámetros
cur
Objeto CComCurrency
que se va a comparar.
Valor devuelto
Devuelve TRUE
si el elemento que se va a comparar no es igual al objeto CComCurrency
; de lo contrario, FALSE
.
Ejemplo
CComCurrency cur1(10, 5000), cur2(10, 5001);
ATLASSERT(cur1 != cur2);
CComCurrency::operator *
Este operador se usa para multiplicar en un objeto CComCurrency
.
CComCurrency operator*(long nOperand) const;
CComCurrency operator*(const CComCurrency& cur) const;
Parámetros
nOperand
El multiplicador.
cur
Objeto CComCurrency
utilizado como multiplicador.
Valor devuelto
Devuelve un objeto CComCurrency
que representa el resultado de la multiplicación. Si se produce un error, como un desbordamiento, este operador llama a AtlThrow
con una HRESULT
descripción del error.
Ejemplo
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 * 2;
ATLASSERT(cur2 == CComCurrency(21, 0));
CComCurrency::operator *=
Este operador se usa para multiplicar en un objeto CComCurrency
y asignarle el resultado.
const CComCurrency& operator*= (long nOperand);
const CComCurrency& operator*= (const CComCurrency& cur);
Parámetros
nOperand
El multiplicador.
cur
Objeto CComCurrency
utilizado como multiplicador.
Valor devuelto
Devuelve el objeto CComCurrency
actualizado. Si se produce un error, como un desbordamiento, este operador llama a AtlThrow
con una HRESULT
descripción del error.
Ejemplo
CComCurrency cur(10, 5000);
cur *= 2;
ATLASSERT(cur == CComCurrency(21, 0));
CComCurrency::operator /
Este operador se usa para dividir en un objeto CComCurrency
.
CComCurrency operator/(long nOperand) const;
Parámetros
nOperand
Divisor.
Valor devuelto
Devuelve un objeto CComCurrency
que representa el resultado de la división. Si el divisor es 0, se producirá un error de aserción.
Ejemplo
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 / 10;
ATLASSERT(cur2 == CComCurrency(1, 500));
CComCurrency::operator /=
Este operador se utiliza para dividir en un objeto CComCurrency
y asignarle el resultado.
const CComCurrency& operator/= (long nOperand);
Parámetros
nOperand
Divisor.
Valor devuelto
Devuelve el objeto CComCurrency
actualizado. Si el divisor es 0, se producirá un error de aserción.
Ejemplo
CComCurrency cur(10, 5000);
cur /= 10;
ATLASSERT(cur == CComCurrency(1, 500));
CComCurrency::operator +
Este operador se usa para sumar en un objeto CComCurrency
.
CComCurrency operator+(const CComCurrency& cur) const;
Parámetros
cur
Objeto CComCurrency
que se va a agregar al objeto original.
Valor devuelto
Devuelve un objeto CComCurrency
que representa el resultado de la adición. Si se produce un error, como un desbordamiento, este operador llama a AtlThrow
con una HRESULT
descripción del error.
Ejemplo
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 + CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(15, 0));
CComCurrency::operator +=
Este operador se usa para sumar en un objeto CComCurrency
y asignar el resultado al objeto actual.
const CComCurrency& operator+= (const CComCurrency& cur);
Parámetros
cur
Objeto CComCurrency
.
Valor devuelto
Devuelve el objeto CComCurrency
actualizado. Si se produce un error, como un desbordamiento, este operador llama a AtlThrow
con una HRESULT
descripción del error.
Ejemplo
CComCurrency cur(10, 2500);
cur += CComCurrency(4, 2500);
ATLASSERT(cur == CComCurrency(14, 5000));
CComCurrency::operator <
Este operador compara dos objetos CComCurrency
para determinar el menor.
bool operator<(const CComCurrency& cur) const;
Parámetros
cur
Un objeto CComCurrency
.
Valor devuelto
Devuelve TRUE
si el primer objeto es menor que el segundo; en caso contrario, FALSE
.
Ejemplo
CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 < cur2);
CComCurrency::operator <=
Este operador compara dos objetos CComCurrency
para determinar si son iguales o cuál es el menor.
bool operator<= (const CComCurrency& cur) const;
Parámetros
cur
Un objeto CComCurrency
.
Valor devuelto
Devuelve TRUE
si el primer objeto es menor o igual que el segundo; en caso contrario, FALSE
.
Ejemplo
CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 <= cur2);
CComCurrency::operator =
El operador asigna el objeto CComCurrency
a un nuevo 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
Un objeto CComCurrency
.
cySrc
Una variable de tipo CURRENCY
.
sSrc
, fSrc
, lSrc
, bSrc
, usSrc
, dSrc
, cSrc
, , ulSrc
dSrc
Valor numérico que se va a asignar al objeto CComCurrency
.
Valor devuelto
Devuelve el objeto CComCurrency
actualizado. Si se produce un error, como un desbordamiento, este operador llama a AtlThrow
con una HRESULT
descripción del error.
Ejemplo
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 -=
Este operador se usa para restar en un objeto CComCurrency
y asignarle el resultado.
const CComCurrency& operator-= (const CComCurrency& cur);
Parámetros
cur
Un objeto CComCurrency
.
Valor devuelto
Devuelve el objeto CComCurrency
actualizado. Si se produce un error, como un desbordamiento, este operador llama a AtlThrow
con una HRESULT
descripción del error.
Ejemplo
CComCurrency cur(10, 5000);
cur -= CComCurrency(4, 5000);
ATLASSERT(cur == CComCurrency(6, 0));
CComCurrency::operator ==
Este operador compara dos objetos CComCurrency
para determinar si son iguales.
bool operator== (const CComCurrency& cur) const;
Parámetros
cur
El objeto CComCurrency
que se va a comparar.
Valor devuelto
Devuelve TRUE
si los objetos son iguales (es decir, los miembros de datos m_currency
, tanto enteros como fraccionarios, en ambos objetos tienen el mismo valor); FALSE
, de lo contrario.
Ejemplo
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1;
ATLASSERT(cur1 == cur2);
CComCurrency::operator >
Este operador compara dos objetos CComCurrency
para determinar el mayor.
bool operator>(const CComCurrency& cur) const;
Parámetros
cur
Un objeto CComCurrency
.
Valor devuelto
Devuelve TRUE
si el primer objeto es mayor que el segundo objeto; en caso contrario, FALSE
.
Ejemplo
CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 > cur2);
CComCurrency::operator >=
Este operador compara dos objetos CComCurrency
para determinar si son iguales o cuál es el mayor.
bool operator>= (const CComCurrency& cur) const;
Parámetros
cur
Un objeto CComCurrency
.
Valor devuelto
Devuelve TRUE
si la primera entrada es mayor o igual que la segunda; de lo contrario, FALSE
.
Ejemplo
CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 >= cur2);
CComCurrency::operator CURRENCY
Estos operadores se usan para convertir un objeto CComCurrency
en un tipo de datos CURRENCY
.
operator CURRENCY&() throw();
operator const CURRENCY&() const throw();
Valor devuelto
Devuelve una referencia a un CURRENCY
objeto .
Ejemplo
CComCurrency cur(10, 5000);
CURRENCY cy = static_cast<CURRENCY>(cur); // Note that explicit cast is not necessary
ATLASSERT(cy.int64 == 105000);
CComCurrency::Round
Llame a este método para redondear la moneda a un número especificado de posiciones decimales.
HRESULT Roundint nDecimals);
Parámetros
nDecimals
Número de dígitos a los que se redondeará m_currency
, en el intervalo de 0 a 4.
Valor devuelto
Devuelve S_OK
si es correcto o un error HRESULT
en caso de error.
Ejemplo
CComCurrency cur(10, 1234);
cur.Round(3);
ATLASSERT(cur.GetFraction() == 1230);
CComCurrency::SetFraction
Llame a este método para establecer el componente de fracción de un objeto CComCurrency
.
HRESULT SetFraction(SHORT nFraction);
Parámetros
nFraction
Valor que se va a asignar al componente fraccionarios del miembro de datos m_currency
. El signo del componente fraccionaria debe ser el mismo que el componente entero y el valor debe estar en el intervalo -9999 (CY_MIN_FRACTION
) a +9999 (CY_MAX_FRACTION
).
Valor devuelto
Devuelve S_OK
si es correcto o un error HRESULT
en caso de error.
Ejemplo
CComCurrency cur(10, 0);
cur.SetFraction(5000);
ATLASSERT(CComCurrency(10, 5000) == cur);
CComCurrency::SetInteger
Llame a este método para establecer el componente entero de un objeto CComCurrency
.
HRESULT SetInteger(LONGLONG nInteger);
Parámetros
nInteger
Valor que se va a asignar al componente entero del miembro de datos m_currency
. El signo del componente entero debe coincidir con el signo del componente fraccionarios existente.
nInteger
debe estar en el intervalo entre CY_MIN_INTEGER
y CY_MAX_INTEGER
, incluido. Estos valores se definen en la atlcur.h.
Valor devuelto
Devuelve S_OK
si es correcto o un error HRESULT
en caso de error.
Ejemplo
CComCurrency cur(0, 5000);
cur.SetInteger(10);
ATLASSERT(CComCurrency(10, 5000) == cur);