Classe CComCurrency
CComCurrency
dispone di metodi e operatori per la creazione e la gestione di un CURRENCY
oggetto.
Sintassi
class CComCurrency;
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CComCurrency::CComCurrency |
Costruttore per un oggetto CComCurrency . |
Metodi pubblici
Nome | Descrizione |
---|---|
CComCurrency::GetCurrencyPtr |
Restituisce l'indirizzo di un membro dati m_currency . |
CComCurrency::GetFraction |
Chiamare questo metodo per restituire il componente frazionario di un oggetto CComCurrency . |
CComCurrency::GetInteger |
Chiamare questo metodo per restituire il componente Integer di un oggetto CComCurrency . |
CComCurrency::Round |
Chiamare questo metodo per arrotondare un oggetto CComCurrency al valore intero più vicino. |
CComCurrency::SetFraction |
Chiamare questo metodo per impostare il componente frazionario di un oggetto CComCurrency . |
CComCurrency::SetInteger |
Chiamare questo metodo per impostare il componente Integer di un oggetto CComCurrency . |
Operatori pubblici
Nome | Descrizione |
---|---|
CComCurrency::operator - |
Questo operatore viene usato per eseguire la sottrazione su un oggetto CComCurrency . |
CComCurrency::operator != |
Confronta due oggetti CComCurrency per stabilirne la disuguaglianza. |
CComCurrency::operator * |
Questo operatore viene usato per eseguire la moltiplicazione su un oggetto CComCurrency . |
CComCurrency::operator *= |
Questo operatore viene usato per eseguire la moltiplicazione su un oggetto CComCurrency e per assegnare il risultato. |
CComCurrency::operator / |
Questo operatore viene usato per eseguire la divisione su un oggetto CComCurrency . |
CComCurrency::operator /= |
Questo operatore viene usato per eseguire la divisione su un oggetto CComCurrency e per assegnare il risultato. |
CComCurrency::operator + |
Questo operatore viene usato per eseguire l'addizione su un oggetto CComCurrency . |
CComCurrency::operator += |
Questo operatore viene usato per eseguire l'addizione su un oggetto CComCurrency e per assegnare il risultato all'oggetto corrente. |
CComCurrency::operator < |
Questo operatore confronta due oggetti CComCurrency per determinare il minore. |
CComCurrency::operator <= |
Questo operatore confronta due oggetti CComCurrency per determinare l'uguaglianza o il minore. |
CComCurrency::operator = |
Questo operatore assegna l'oggetto CComCurrency a un nuovo valore. |
CComCurrency::operator -= |
Questo operatore viene usato per eseguire la sottrazione su un oggetto CComCurrency e per assegnare il risultato. |
CComCurrency::operator == |
Questo operatore confronta due oggetti CComCurrency per stabilirne l'uguaglianza. |
CComCurrency::operator > |
Questo operatore confronta due oggetti CComCurrency per determinare il più grande. |
CComCurrency::operator >= |
Questo operatore confronta due oggetti CComCurrency per determinare l'uguaglianza o il più grande. |
CComCurrency::operator CURRENCY |
Esegue il cast di un CURRENCY oggetto . |
Membri dati pubblici
Nome | Descrizione |
---|---|
CComCurrency::m_currency |
Variabile CURRENCY creata dall'istanza della classe. |
Osservazioni:
CComCurrency
è un wrapper per il CURRENCY
tipo di dati. CURRENCY
viene implementato come valore intero a complemento di 8 byte scalato da 10.000. Questa scalabilità fornisce un numero a virgola fissa con 15 cifre a sinistra del separatore decimale e 4 cifre a destra. Il CURRENCY
tipo di dati è utile per i calcoli che coinvolgono denaro o per qualsiasi calcolo a virgola fissa in cui l'accuratezza è importante.
Il CComCurrency
wrapper implementa operazioni aritmetiche, di assegnazione e confronto per questo tipo a virgola fissa. Le applicazioni supportate sono state selezionate per controllare gli errori di arrotondamento che possono verificarsi durante i calcoli a virgola fissa.
L'oggetto CComCurrency
fornisce l'accesso ai numeri su entrambi i lati del separatore decimale sotto forma di due componenti: un componente integer, che archivia il valore a sinistra del separatore decimale e un componente frazionaria, che archivia il valore a destra del separatore decimale. Il componente frazionaria viene archiviato internamente come valore intero compreso tra -9999 (CY_MIN_FRACTION
) e +9999 (CY_MAX_FRACTION
). Il metodo CComCurrency::GetFraction
restituisce un valore ridimensionato da un fattore pari a 10000 (CY_SCALE
).
Quando si specificano i componenti integer e frazionari di un CComCurrency
oggetto, tenere presente che il componente frazionaria è un numero compreso nell'intervallo compreso tra 0 e 9999. Questa considerazione è importante quando si tratta di una valuta come il dollaro statunitense. Gli importi in dollari vengono comunemente espressi utilizzando solo due cifre significative dopo il separatore decimale. Anche se le ultime due cifre non vengono visualizzate, devono essere prese in considerazione.
Valore | Valori possibili di CComCurrency |
---|---|
$10.50 | CComCurrency(10,5000) oppure CComCurrency(10.50) |
$10.05 | CComCurrency(10,500) oppure CComCurrency(10.05) |
I valori CY_MIN_FRACTION
, CY_MAX_FRACTION
e CY_SCALE
sono definiti in atlcur.h.
Requisiti
Intestazione: atlcur.h
CComCurrency::CComCurrency
Costruttore.
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);
Parametri
curSrc
Oggetto CComCurrency
esistente.
cySrc
Variabile di tipo CURRENCY
.
bSrc
, dSrc
, fSrc
, lSrc
sSrc
, , ulSrc
usSrc
Valore iniziale assegnato alla variabile m_currency
membro .
cSrc
Carattere contenente il valore iniziale assegnato alla variabile m_currency
membro .
nInteger
, nFraction
Componenti interi e frazionari del valore monetario iniziale. Per altre informazioni, vedere la CComCurrency
panoramica.
pDispSrc
Puntatore IDispatch
.
varSrc
Variabile di tipo VARIANT
. Le impostazioni locali del thread corrente vengono usate per eseguire la conversione.
szSrc
Stringa Unicode o ANSI contenente il valore iniziale. Le impostazioni locali del thread corrente vengono usate per eseguire la conversione.
Osservazioni:
Il costruttore imposta il valore iniziale di CComCurrency::m_currency
e accetta un'ampia gamma di tipi di dati, inclusi numeri interi, stringhe, numeri a virgola mobile, CURRENCY
variabili e altri CComCurrency
oggetti. Se non viene specificato alcun valore, m_currency
è impostato su 0.
Se si verifica un errore, ad esempio un overflow, i costruttori privi di una chiamata AtlThrow
specifica di eccezione vuota (throw()
) con una HRESULT
descrizione dell'errore.
Quando si usano valori a virgola mobile o double per assegnare un valore, tenere presente che CComCurrency(10.50)
equivale a e non CComCurrency(10,50)
a CComCurrency(10,5000)
.
CComCurrency::GetCurrencyPtr
Restituisce l'indirizzo di un membro dati m_currency
.
CURRENCY* GetCurrencyPtr() throw();
Valore restituito
Restituisce l'indirizzo di un m_currency
membro dati
CComCurrency::GetFraction
Chiamare questo metodo per restituire il componente frazionaria dell'oggetto CComCurrency
.
SHORT GetFraction() const;
Valore restituito
Restituisce il componente frazionaria del m_currency
membro dati.
Osservazioni:
Il componente frazionaria è un valore intero a 4 cifre compreso tra -9999 (CY_MIN_FRACTION
) e +9999 (CY_MAX_FRACTION
). GetFraction
restituisce questo valore ridimensionato di 10000 (CY_SCALE
). I valori di CY_MIN_FRACTION
, CY_MAX_FRACTION
e CY_SCALE
sono definiti in atlcur.h.
Esempio
CComCurrency cur(10, 5000);
int nFract;
nFract = cur.GetFraction();
ATLASSERT(nFract == 5000);
CComCurrency::GetInteger
Chiamare questo metodo per ottenere il componente integer di un CComCurrency
oggetto .
LONGLONG GetInteger() const;
Valore restituito
Restituisce il componente integer del m_currency
membro dati.
Esempio
CComCurrency cur(10, 5000);
LONGLONG nInteger;
nInteger = cur.GetInteger();
ATLASSERT(nInteger == 10);
CComCurrency::m_currency
Membro CURRENCY
dati.
CURRENCY m_currency;
Osservazioni:
Questo membro contiene la valuta accessibile e modificata dai metodi di questa classe.
CComCurrency::operator -
Questo operatore viene usato per eseguire la sottrazione su un oggetto CComCurrency
.
CComCurrency operator-() const;
CComCurrency operator-(const CComCurrency& cur) const;
Parametri
cur
Oggetto CComCurrency
.
Valore restituito
Restituisce un CComCurrency
oggetto che rappresenta il risultato della sottrazione. Se si verifica un errore, ad esempio un overflow, questo operatore chiama AtlThrow
con una HRESULT
descrizione dell'errore.
Esempio
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 - CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(6, 0));
CComCurrency::operator !=
Questo operatore confronta due oggetti per verificare la disuguaglianza.
bool operator!= (const CComCurrency& cur) const;
Parametri
cur
L'oggetto CComCurrency
da confrontare.
Valore restituito
Restituisce TRUE
se l'elemento confrontato non è uguale all'oggetto CComCurrency
; in caso contrario, FALSE
.
Esempio
CComCurrency cur1(10, 5000), cur2(10, 5001);
ATLASSERT(cur1 != cur2);
CComCurrency::operator *
Questo operatore viene usato per eseguire la moltiplicazione su un oggetto CComCurrency
.
CComCurrency operator*(long nOperand) const;
CComCurrency operator*(const CComCurrency& cur) const;
Parametri
nOperand
Moltiplicatore.
cur
Oggetto CComCurrency
utilizzato come moltiplicatore.
Valore restituito
Restituisce un CComCurrency
oggetto che rappresenta il risultato della moltiplicazione. Se si verifica un errore, ad esempio un overflow, questo operatore chiama AtlThrow
con una HRESULT
descrizione dell'errore.
Esempio
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 * 2;
ATLASSERT(cur2 == CComCurrency(21, 0));
CComCurrency::operator *=
Questo operatore viene usato per eseguire la moltiplicazione su un oggetto CComCurrency
e per assegnare il risultato.
const CComCurrency& operator*= (long nOperand);
const CComCurrency& operator*= (const CComCurrency& cur);
Parametri
nOperand
Moltiplicatore.
cur
Oggetto CComCurrency
utilizzato come moltiplicatore.
Valore restituito
Restituisce l'oggetto aggiornato CComCurrency
. Se si verifica un errore, ad esempio un overflow, questo operatore chiama AtlThrow
con una HRESULT
descrizione dell'errore.
Esempio
CComCurrency cur(10, 5000);
cur *= 2;
ATLASSERT(cur == CComCurrency(21, 0));
CComCurrency::operator /
Questo operatore viene usato per eseguire la divisione su un oggetto CComCurrency
.
CComCurrency operator/(long nOperand) const;
Parametri
nOperand
Divisore.
Valore restituito
Restituisce un CComCurrency
oggetto che rappresenta il risultato della divisione. Se il divisore è 0, si verificherà un errore di asserzione.
Esempio
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 / 10;
ATLASSERT(cur2 == CComCurrency(1, 500));
CComCurrency::operator /=
Questo operatore viene usato per eseguire la divisione su un oggetto CComCurrency
e per assegnare il risultato.
const CComCurrency& operator/= (long nOperand);
Parametri
nOperand
Divisore.
Valore restituito
Restituisce l'oggetto aggiornato CComCurrency
. Se il divisore è 0, si verificherà un errore di asserzione.
Esempio
CComCurrency cur(10, 5000);
cur /= 10;
ATLASSERT(cur == CComCurrency(1, 500));
CComCurrency::operator +
Questo operatore viene usato per eseguire l'addizione su un oggetto CComCurrency
.
CComCurrency operator+(const CComCurrency& cur) const;
Parametri
cur
Oggetto CComCurrency
da aggiungere all'oggetto originale.
Valore restituito
Restituisce un CComCurrency
oggetto che rappresenta il risultato dell'addizione. Se si verifica un errore, ad esempio un overflow, questo operatore chiama AtlThrow
con una HRESULT
descrizione dell'errore.
Esempio
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 + CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(15, 0));
CComCurrency::operator +=
Questo operatore viene usato per eseguire l'addizione su un oggetto CComCurrency
e per assegnare il risultato all'oggetto corrente.
const CComCurrency& operator+= (const CComCurrency& cur);
Parametri
cur
Oggetto CComCurrency
.
Valore restituito
Restituisce l'oggetto aggiornato CComCurrency
. Se si verifica un errore, ad esempio un overflow, questo operatore chiama AtlThrow
con una HRESULT
descrizione dell'errore.
Esempio
CComCurrency cur(10, 2500);
cur += CComCurrency(4, 2500);
ATLASSERT(cur == CComCurrency(14, 5000));
CComCurrency::operator <
Questo operatore confronta due oggetti CComCurrency
per determinare il minore.
bool operator<(const CComCurrency& cur) const;
Parametri
cur
Oggetto CComCurrency
.
Valore restituito
Restituisce TRUE
se il primo oggetto è minore del secondo; in caso contrario, FALSE
.
Esempio
CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 < cur2);
CComCurrency::operator <=
Questo operatore confronta due oggetti CComCurrency
per determinare l'uguaglianza o il minore.
bool operator<= (const CComCurrency& cur) const;
Parametri
cur
Oggetto CComCurrency
.
Valore restituito
Restituisce TRUE
se il primo oggetto è minore o uguale al secondo, FALSE
in caso contrario.
Esempio
CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 <= cur2);
CComCurrency::operator =
Questo operatore assegna l'oggetto CComCurrency
a un nuovo valore.
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);
Parametri
curSrc
Oggetto CComCurrency
.
cySrc
Variabile di tipo CURRENCY
.
sSrc
, fSrc
, lSrc
, bSrc
, usSrc
dSrc
, cSrc
, , ulSrc
dSrc
Valore numerico da assegnare all'oggetto CComCurrency
.
Valore restituito
Restituisce l'oggetto aggiornato CComCurrency
. Se si verifica un errore, ad esempio un overflow, questo operatore chiama AtlThrow
con una HRESULT
descrizione dell'errore.
Esempio
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 -=
Questo operatore viene usato per eseguire la sottrazione su un oggetto CComCurrency
e per assegnare il risultato.
const CComCurrency& operator-= (const CComCurrency& cur);
Parametri
cur
Oggetto CComCurrency
.
Valore restituito
Restituisce l'oggetto aggiornato CComCurrency
. Se si verifica un errore, ad esempio un overflow, questo operatore chiama AtlThrow
con una HRESULT
descrizione dell'errore.
Esempio
CComCurrency cur(10, 5000);
cur -= CComCurrency(4, 5000);
ATLASSERT(cur == CComCurrency(6, 0));
CComCurrency::operator ==
Questo operatore confronta due oggetti CComCurrency
per stabilirne l'uguaglianza.
bool operator== (const CComCurrency& cur) const;
Parametri
cur
Oggetto CComCurrency
da confrontare.
Valore restituito
Restituisce TRUE
se gli oggetti sono uguali, ovvero i m_currency
membri dati, sia integer che frazionari, in entrambi gli oggetti hanno lo stesso valore, FALSE
in caso contrario.
Esempio
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1;
ATLASSERT(cur1 == cur2);
CComCurrency::operator >
Questo operatore confronta due oggetti CComCurrency
per determinare il più grande.
bool operator>(const CComCurrency& cur) const;
Parametri
cur
Oggetto CComCurrency
.
Valore restituito
Restituisce TRUE
se il primo oggetto è maggiore del secondo; in caso contrario, FALSE
.
Esempio
CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 > cur2);
CComCurrency::operator >=
Questo operatore confronta due oggetti CComCurrency
per determinare l'uguaglianza o il più grande.
bool operator>= (const CComCurrency& cur) const;
Parametri
cur
Oggetto CComCurrency
.
Valore restituito
Restituisce TRUE
se il primo oggetto è maggiore o uguale al secondo, FALSE
in caso contrario.
Esempio
CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 >= cur2);
CComCurrency::operator CURRENCY
Questi operatori vengono usati per eseguire il cast di un CComCurrency
oggetto a un CURRENCY
tipo di dati.
operator CURRENCY&() throw();
operator const CURRENCY&() const throw();
Valore restituito
Restituisce un riferimento a un CURRENCY
oggetto .
Esempio
CComCurrency cur(10, 5000);
CURRENCY cy = static_cast<CURRENCY>(cur); // Note that explicit cast is not necessary
ATLASSERT(cy.int64 == 105000);
CComCurrency::Round
Chiamare questo metodo per arrotondare la valuta a un numero specificato di posizioni decimali.
HRESULT Roundint nDecimals);
Parametri
nDecimals
Numero di cifre a cui m_currency
verrà arrotondato, nell'intervallo da 0 a 4.
Valore restituito
Restituisce S_OK
l'esito positivo o un errore in caso di errore HRESULT
.
Esempio
CComCurrency cur(10, 1234);
cur.Round(3);
ATLASSERT(cur.GetFraction() == 1230);
CComCurrency::SetFraction
Chiamare questo metodo per impostare il componente frazionario di un oggetto CComCurrency
.
HRESULT SetFraction(SHORT nFraction);
Parametri
nFraction
Valore da assegnare al componente frazionario del m_currency
membro dati. Il segno del componente frazionaria deve essere uguale al componente integer e il valore deve essere compreso nell'intervallo compreso tra -9999 (CY_MIN_FRACTION
) e +9999 (CY_MAX_FRACTION
).
Valore restituito
Restituisce S_OK
l'esito positivo o un errore in caso di errore HRESULT
.
Esempio
CComCurrency cur(10, 0);
cur.SetFraction(5000);
ATLASSERT(CComCurrency(10, 5000) == cur);
CComCurrency::SetInteger
Chiamare questo metodo per impostare il componente Integer di un oggetto CComCurrency
.
HRESULT SetInteger(LONGLONG nInteger);
Parametri
nInteger
Valore da assegnare al componente integer del m_currency
membro dati. Il segno del componente integer deve corrispondere al segno del componente frazionaria esistente.
nInteger
deve essere compreso nell'intervallo CY_MIN_INTEGER
CY_MAX_INTEGER
compreso tra , inclusi. Questi valori sono definiti in atlcur.h.
Valore restituito
Restituisce S_OK
l'esito positivo o un errore in caso di errore HRESULT
.
Esempio
CComCurrency cur(0, 5000);
cur.SetInteger(10);
ATLASSERT(CComCurrency(10, 5000) == cur);