Partage via


La classe CComCurrency

CComCurrency possède des méthodes et des opérateurs pour la création et la gestion d’un CURRENCY objet.

Syntaxe

class CComCurrency;

Membres

Constructeurs publics

Nom Description
CComCurrency::CComCurrency Constructeur d'un objet CComCurrency.

Méthodes publiques

Nom Description
CComCurrency::GetCurrencyPtr Retourne l'adresse d'un membre de données m_currency.
CComCurrency::GetFraction Appelez cette méthode pour retourner la partie fractionnaire d'un objet CComCurrency.
CComCurrency::GetInteger Appelez cette méthode pour retourner la partie entière d'un objet CComCurrency.
CComCurrency::Round Appelez cette méthode pour arrondir un objet CComCurrency à l'entier le plus proche.
CComCurrency::SetFraction Appelez cette méthode pour définir la partie fractionnaire d'un objet CComCurrency.
CComCurrency::SetInteger Appelez cette méthode pour définir la partie entière d'un objet CComCurrency.

Opérateurs publics

Nom Description
CComCurrency::operator - Cet opérateur permet d'effectuer une soustraction sur un objet CComCurrency.
CComCurrency::operator != Compare deux objets CComCurrency pour déterminer s'ils sont différents.
CComCurrency::operator * Cet opérateur permet d'effectuer une multiplication sur un objet CComCurrency.
CComCurrency::operator *= Cet opérateur permet d'effectuer une multiplication sur un objet CComCurrency et de lui assigner le résultat.
CComCurrency::operator / Cet opérateur permet d'effectuer une division sur un objet CComCurrency.
CComCurrency::operator /= Cet opérateur permet d'effectuer une division sur un objet CComCurrency et de lui assigner le résultat.
CComCurrency::operator + Cet opérateur permet d'effectuer une addition sur un objet CComCurrency.
CComCurrency::operator += Cet opérateur permet d'effectuer une addition sur un objet CComCurrency et d'assigner le résultat à l'objet actuel.
CComCurrency::operator < Cet opérateur compare deux objets CComCurrency pour déterminer le plus petit.
CComCurrency::operator <= Cet opérateur compare deux objets CComCurrency pour déterminer le plus petit ou leur égalité.
CComCurrency::operator = Cet opérateur assigne l'objet CComCurrency à une nouvelle valeur.
CComCurrency::operator -= Cet opérateur permet d'effectuer une soustraction sur un objet CComCurrency et de lui assigner le résultat.
CComCurrency::operator == Cet opérateur compare deux objets CComCurrency pour déterminer leur égalité.
CComCurrency::operator > Cet opérateur compare deux objets CComCurrency pour déterminer le plus grand.
CComCurrency::operator >= Cet opérateur compare deux objets CComCurrency pour déterminer le plus grand ou leur égalité.
CComCurrency::operator CURRENCY Convertit un CURRENCY objet.

Membres de données publiques

Nom Description
CComCurrency::m_currency Variable CURRENCY créée par votre instance de classe.

Notes

CComCurrency est un wrapper pour le type de CURRENCY données. CURRENCY est implémenté en tant que valeur entière de 8 octets de deux octets mise à l’échelle par 10 000. Cette mise à l’échelle donne un nombre à virgule fixe avec 15 chiffres à gauche de la virgule décimale et 4 chiffres à droite. Le CURRENCY type de données est utile pour les calculs impliquant de l’argent, ou pour tous les calculs à point fixe où la précision est importante.

Le CComCurrency wrapper implémente des opérations arithmétiques, d’affectation et de comparaison pour ce type de point fixe. Les applications prises en charge ont été sélectionnées pour contrôler les erreurs d'arrondi qui peuvent se produire lors de calculs à virgule fixe.

L’objet CComCurrency permet d’accéder aux nombres de chaque côté de la virgule décimale sous la forme de deux composants : un composant entier, qui stocke la valeur à gauche du point décimal et un composant fractionnaire, qui stocke la valeur à droite de la virgule décimale. Le composant fractionnaire est stocké en interne sous la forme d’une valeur entière comprise entre -9999 (CY_MIN_FRACTION) et +9999 (CY_MAX_FRACTION). La méthode CComCurrency::GetFraction retourne une valeur mise à l’échelle par un facteur de 1 0000 (CY_SCALE).

Lorsque vous spécifiez les composants entiers et fractionnaires d’un CComCurrency objet, n’oubliez pas que le composant fractionnaire est un nombre compris entre 0 et 9999. Cette considération est importante lorsque vous traitez d’une devise telle que le dollar américain. Les montants en dollars sont généralement exprimés en utilisant seulement deux chiffres significatifs après la virgule décimale. Même si les deux derniers chiffres ne sont pas affichés, ils doivent être pris en compte.

Valeur Affectations CComCurrency possibles
$10.50 CComCurrency(10,5000) ou CComCurrency(10.50)
$10.05 CComCurrency(10,500) ou CComCurrency(10.05)

Les valeurs CY_MIN_FRACTION, CY_MAX_FRACTIONet CY_SCALE sont définies dans atlcur.h.

Spécifications

En-tête : atlcur.h

CComCurrency::CComCurrency

Constructeur .

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

Paramètres

curSrc
Objet CComCurrency existant.

cySrc
Variable de type CURRENCY.

bSrc, dSrc, , lSrcfSrc, sSrc, , ulSrc,usSrc
Valeur initiale donnée à la variable m_currencymembre .

cSrc
Caractère contenant la valeur initiale donnée à la variable m_currencymembre.

nInteger, nFraction
Entier et composants fractionnaires de la valeur monétaire initiale. Pour plus d’informations, consultez la vue d’ensemble CComCurrency .

pDispSrc
Pointeur IDispatch .

varSrc
Variable de type VARIANT. Les paramètres régionaux du thread actuel sont utilisés pour effectuer la conversion.

szSrc
Chaîne Unicode ou ANSI contenant la valeur initiale. Les paramètres régionaux du thread actuel sont utilisés pour effectuer la conversion.

Notes

Le constructeur définit la valeur initiale de , et accepte un large éventail de CComCurrency::m_currencytypes de données, notamment des entiers, des chaînes, des nombres à virgule flottante, CURRENCY des variables et d’autres CComCurrency objets. Si aucune valeur n’est fournie, m_currency la valeur est 0.

En cas d’erreur, telle qu’un dépassement de capacité, les constructeurs ne disposant pas d’un appel AtlThrow de spécification d’exception vide (throw()) avec une HRESULT description de l’erreur.

Lorsque vous utilisez des valeurs à virgule flottante ou double pour affecter une valeur, n’oubliez pas que cela CComCurrency(10.50) équivaut à CComCurrency(10,5000), et non CComCurrency(10,50).

CComCurrency::GetCurrencyPtr

Retourne l'adresse d'un membre de données m_currency.

CURRENCY* GetCurrencyPtr() throw();

Valeur retournée

Retourne l’adresse d’un m_currency membre de données

CComCurrency::GetFraction

Appelez cette méthode pour retourner le composant fractionnaire de l’objet CComCurrency .

SHORT GetFraction() const;

Valeur retournée

Retourne le composant fractionnaire du m_currency membre de données.

Notes

Le composant fractionnaire est une valeur entière à 4 chiffres comprise entre -9999 (CY_MIN_FRACTION) et +9999 (CY_MAX_FRACTION). GetFraction retourne cette valeur mise à l’échelle de 1 0000 (CY_SCALE). Les valeurs de CY_MIN_FRACTION, CY_MAX_FRACTIONet CY_SCALE sont définies dans atlcur.h.

Exemple

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

CComCurrency::GetInteger

Appelez cette méthode pour obtenir le composant entier d’un CComCurrency objet.

LONGLONG GetInteger() const;

Valeur retournée

Retourne le composant entier du m_currency membre de données.

Exemple

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

CComCurrency::m_currency

Membre de CURRENCY données.

CURRENCY m_currency;

Notes

Ce membre contient la devise accessible et manipulée par les méthodes de cette classe.

CComCurrency::operator -

Cet opérateur permet d'effectuer une soustraction sur un objet CComCurrency.

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

Paramètres

cur
Objet CComCurrency.

Valeur retournée

Retourne un CComCurrency objet représentant le résultat de la soustraction. En cas d’erreur, telle qu’un dépassement de capacité, cet opérateur appelle AtlThrow avec une HRESULT description de l’erreur.

Exemple

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

CComCurrency::operator !=

Cet opérateur compare deux objets pour l’inégalité.

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

Paramètres

cur
Objet CComCurrency à comparer.

Valeur retournée

Retourne TRUE si l’élément comparé n’est pas égal à l’objet CComCurrency ; sinon, FALSE.

Exemple

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

CComCurrency::operator *

Cet opérateur permet d'effectuer une multiplication sur un objet CComCurrency.

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

Paramètres

nOperand
Multiplicateur.

cur
Objet CComCurrency utilisé comme multiplicateur.

Valeur retournée

Retourne un CComCurrency objet représentant le résultat de la multiplication. En cas d’erreur, telle qu’un dépassement de capacité, cet opérateur appelle AtlThrow avec une HRESULT description de l’erreur.

Exemple

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

CComCurrency::operator *=

Cet opérateur permet d'effectuer une multiplication sur un objet CComCurrency et de lui assigner le résultat.

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

Paramètres

nOperand
Multiplicateur.

cur
Objet CComCurrency utilisé comme multiplicateur.

Valeur retournée

Retourne l’objet mis à jour CComCurrency . En cas d’erreur, telle qu’un dépassement de capacité, cet opérateur appelle AtlThrow avec une HRESULT description de l’erreur.

Exemple

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

CComCurrency::operator /

Cet opérateur permet d'effectuer une division sur un objet CComCurrency.

CComCurrency operator/(long nOperand) const;

Paramètres

nOperand
Diviseur.

Valeur retournée

Retourne un CComCurrency objet représentant le résultat de la division. Si le diviseur est 0, une défaillance d’assertion se produit.

Exemple

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

CComCurrency::operator /=

Cet opérateur permet d'effectuer une division sur un objet CComCurrency et de lui assigner le résultat.

const CComCurrency& operator/= (long nOperand);

Paramètres

nOperand
Diviseur.

Valeur retournée

Retourne l’objet mis à jour CComCurrency . Si le diviseur est 0, une défaillance d’assertion se produit.

Exemple

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

CComCurrency::operator +

Cet opérateur permet d'effectuer une addition sur un objet CComCurrency.

CComCurrency operator+(const CComCurrency& cur) const;

Paramètres

cur
Objet CComCurrency à ajouter à l’objet d’origine.

Valeur retournée

Retourne un CComCurrency objet représentant le résultat de l’ajout. En cas d’erreur, telle qu’un dépassement de capacité, cet opérateur appelle AtlThrow avec une HRESULT description de l’erreur.

Exemple

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

CComCurrency::operator +=

Cet opérateur permet d'effectuer une addition sur un objet CComCurrency et d'assigner le résultat à l'objet actuel.

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

Paramètres

cur
Objet CComCurrency.

Valeur retournée

Retourne l’objet mis à jour CComCurrency . En cas d’erreur, telle qu’un dépassement de capacité, cet opérateur appelle AtlThrow avec une HRESULT description de l’erreur.

Exemple

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

CComCurrency::operator <

Cet opérateur compare deux objets CComCurrency pour déterminer le plus petit.

bool operator<(const CComCurrency& cur) const;

Paramètres

cur
Objet CComCurrency.

Valeur retournée

Retourne TRUE si le premier objet est inférieur à la seconde, FALSE sinon.

Exemple

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

CComCurrency::operator <=

Cet opérateur compare deux objets CComCurrency pour déterminer le plus petit ou leur égalité.

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

Paramètres

cur
Objet CComCurrency.

Valeur retournée

Retourne TRUE si le premier objet est inférieur ou égal à la seconde, FALSE sinon.

Exemple

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

CComCurrency::operator =

Cet opérateur assigne l'objet CComCurrency à une nouvelle valeur.

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

Paramètres

curSrc
Objet CComCurrency.

cySrc
Variable de type CURRENCY.

sSrc, fSrc, , bSrclSrc, usSrc, dSrc, cSrc, ulSrc,dSrc
Valeur numérique à affecter à l’objet CComCurrency .

Valeur retournée

Retourne l’objet mis à jour CComCurrency . En cas d’erreur, telle qu’un dépassement de capacité, cet opérateur appelle AtlThrow avec une HRESULT description de l’erreur.

Exemple

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

Cet opérateur permet d'effectuer une soustraction sur un objet CComCurrency et de lui assigner le résultat.

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

Paramètres

cur
Objet CComCurrency.

Valeur retournée

Retourne l’objet mis à jour CComCurrency . En cas d’erreur, telle qu’un dépassement de capacité, cet opérateur appelle AtlThrow avec une HRESULT description de l’erreur.

Exemple

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

CComCurrency::operator ==

Cet opérateur compare deux objets CComCurrency pour déterminer leur égalité.

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

Paramètres

cur
Objet CComCurrency à comparer.

Valeur retournée

Retourne TRUE si les objets sont égaux (c’est-à-dire les membres de m_currency données, entiers et fractionnaires, dans les deux objets ont la même valeur), FALSE sinon.

Exemple

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

CComCurrency::operator >

Cet opérateur compare deux objets CComCurrency pour déterminer le plus grand.

bool operator>(const CComCurrency& cur) const;

Paramètres

cur
Objet CComCurrency.

Valeur retournée

Retourne TRUE si le premier objet est supérieur au deuxième, FALSE sinon.

Exemple

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

CComCurrency::operator >=

Cet opérateur compare deux objets CComCurrency pour déterminer le plus grand ou leur égalité.

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

Paramètres

cur
Objet CComCurrency.

Valeur retournée

Retourne TRUE si le premier objet est supérieur ou égal à la seconde, FALSE sinon.

Exemple

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

CComCurrency::operator CURRENCY

Ces opérateurs sont utilisés pour convertir un CComCurrency objet en un CURRENCY type de données.

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

Valeur retournée

Retourne une référence à un CURRENCY objet.

Exemple

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

CComCurrency::Round

Appelez cette méthode pour arrondir la devise à un nombre spécifié de décimales.

HRESULT Roundint nDecimals);

Paramètres

nDecimals
Nombre de chiffres à arrondir m_currency , compris entre 0 et 4.

Valeur retournée

Retourne S_OK la réussite ou une erreur en cas d’échec HRESULT .

Exemple

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

CComCurrency::SetFraction

Appelez cette méthode pour définir la partie fractionnaire d'un objet CComCurrency.

HRESULT SetFraction(SHORT nFraction);

Paramètres

nFraction
Valeur à affecter au composant fractionnaire du m_currency membre de données. Le signe du composant fractionnaire doit être identique au composant entier, et la valeur doit se trouver dans la plage -9999 (CY_MIN_FRACTION) à +9999 (CY_MAX_FRACTION).

Valeur retournée

Retourne S_OK la réussite ou une erreur en cas d’échec HRESULT .

Exemple

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

CComCurrency::SetInteger

Appelez cette méthode pour définir la partie entière d'un objet CComCurrency.

HRESULT SetInteger(LONGLONG nInteger);

Paramètres

nInteger
Valeur à affecter au composant entier du m_currency membre de données. Le signe du composant entier doit correspondre au signe du composant fractionnaire existant.

nInteger doit être compris dans la plage CY_MIN_INTEGER , CY_MAX_INTEGERinclusive. Ces valeurs sont définies dans atlcur.h.

Valeur retournée

Retourne S_OK la réussite ou une erreur en cas d’échec HRESULT .

Exemple

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

Voir aussi

COleCurrency, classe
CURRENCY
Vue d’ensemble de la classe