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_FRACTION
et 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
, , lSrc
fSrc
, sSrc
, , ulSrc
,usSrc
Valeur initiale donnée à la variable m_currency
membre .
cSrc
Caractère contenant la valeur initiale donnée à la variable m_currency
membre.
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_currency
types 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_FRACTION
et 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
, , bSrc
lSrc
, 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_INTEGER
inclusive. 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);