CComCurrency
Třída
CComCurrency
obsahuje metody a operátory pro vytváření a správu objektu CURRENCY
.
Syntaxe
class CComCurrency;
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CComCurrency::CComCurrency |
Konstruktor objektu CComCurrency . |
Veřejné metody
Název | Popis |
---|---|
CComCurrency::GetCurrencyPtr |
Vrátí adresu datového člena m_currency . |
CComCurrency::GetFraction |
Voláním této metody vrátíte zlomkovou komponentu objektu CComCurrency . |
CComCurrency::GetInteger |
Voláním této metody vrátí celočíselnou komponentu objektu CComCurrency . |
CComCurrency::Round |
Voláním této metody zaokrouhlíte CComCurrency objekt na nejbližší celočíselnou hodnotu. |
CComCurrency::SetFraction |
Voláním této metody nastavíte zlomkovou komponentu objektu CComCurrency . |
CComCurrency::SetInteger |
Voláním této metody nastavíte celočíselnou komponentu objektu CComCurrency . |
Veřejné operátory
Název | Popis |
---|---|
CComCurrency::operator - |
Tento operátor slouží k provádění odčítání objektu CComCurrency . |
CComCurrency::operator != |
Porovná dva CComCurrency objekty pro nerovnost. |
CComCurrency::operator * |
Tento operátor slouží k provádění násobení objektu CComCurrency . |
CComCurrency::operator *= |
Tento operátor slouží k provádění násobení objektu CComCurrency a přiřazení výsledku. |
CComCurrency::operator / |
Tento operátor slouží k dělení objektu CComCurrency . |
CComCurrency::operator /= |
Tento operátor slouží k provedení dělení objektu CComCurrency a přiřazení výsledku. |
CComCurrency::operator + |
Tento operátor slouží k přidání objektu CComCurrency . |
CComCurrency::operator += |
Tento operátor slouží k provádění sčítání objektu CComCurrency a přiřazení výsledku k aktuálnímu objektu. |
CComCurrency::operator < |
Tento operátor porovnává dva CComCurrency objekty, aby určil menší. |
CComCurrency::operator <= |
Tento operátor porovnává dva CComCurrency objekty k určení rovnosti nebo menší. |
CComCurrency::operator = |
Tento operátor přiřadí CComCurrency objekt nové hodnotě. |
CComCurrency::operator -= |
Tento operátor slouží k provádění odčítání objektu CComCurrency a přiřazení výsledku. |
CComCurrency::operator == |
Tento operátor porovnává dva CComCurrency objekty pro rovnost. |
CComCurrency::operator > |
Tento operátor porovná dva CComCurrency objekty a určí větší objekty. |
CComCurrency::operator >= |
Tento operátor porovná dva CComCurrency objekty a určí rovnost nebo větší. |
CComCurrency::operator CURRENCY |
Přetypuje CURRENCY objekt. |
Veřejné datové členy
Název | Popis |
---|---|
CComCurrency::m_currency |
Proměnná CURRENCY vytvořená instancí třídy. |
Poznámky
CComCurrency
je obálka pro CURRENCY
datový typ. CURRENCY
se implementuje jako celočíselná hodnota 8 bajtového doplňku se škálováním o 10 000. Toto měřítko poskytuje číslo s pevným bodem o 15 číslic vlevo od desetinné čárky a 4 číslic vpravo. Datový CURRENCY
typ je užitečný pro výpočty zahrnující peníze nebo pro výpočty s pevným bodem, kde je přesnost důležitá.
Obálka CComCurrency
implementuje aritmetické operace, přiřazení a porovnání tohoto typu s pevným bodem. Byly vybrány podporované aplikace pro řízení chyb zaokrouhlení, ke kterým může dojít při výpočtech s pevnými body.
Objekt CComCurrency
poskytuje přístup k číslům na obou stranách desetinné čárky ve formě dvou součástí: celočíselná komponenta, která ukládá hodnotu vlevo od desetinné čárky, a zlomkovou komponentu, která ukládá hodnotu vpravo od desetinné čárky. Zlomková komponenta je uložena interně jako celočíselná hodnota mezi -9999 (CY_MIN_FRACTION
) a +9999 (CY_MAX_FRACTION
). Metoda CComCurrency::GetFraction
vrátí hodnotu škálovanou faktorem 1 0000 (CY_SCALE
).
Při zadávání celočíselné a zlomkové komponenty objektu CComCurrency
nezapomeňte, že desetinná součást je číslo v rozsahu 0 až 9999. Tato skutečnost je důležitá při práci s měnou, jako je americký dolar. Částky v dolarech se obvykle vyjadřují pouze dvěma významnými číslicemi za desetinnou čárkou. I když se nezobrazují poslední dvě číslice, je nutné je vzít v úvahu.
Hodnota | Možná přiřazení CComCurrency |
---|---|
$10,50 | CComCurrency(10,5000) nebo CComCurrency(10.50) |
$10,05 | CComCurrency(10,500) nebo CComCurrency(10.05) |
Hodnoty CY_MIN_FRACTION
, CY_MAX_FRACTION
a CY_SCALE
jsou definovány v atlcur.h.
Požadavky
Hlavička: atlcur.h
CComCurrency::CComCurrency
Konstruktor
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);
Parametry
curSrc
Existující objekt CComCurrency
.
cySrc
Proměnná typu CURRENCY
.
bSrc
, dSrc
, fSrc
, lSrc
, sSrc
, , ulSrc
usSrc
Počáteční hodnota zadaná členské proměnné m_currency
.
cSrc
Znak obsahující počáteční hodnotu zadanou členské proměnné m_currency
.
nInteger
, nFraction
Celočíselná a desetinná část počáteční peněžní hodnoty. Další informace najdete v přehledu CComCurrency
.
pDispSrc
Ukazatel IDispatch
.
varSrc
Proměnná typu VARIANT
. Národní prostředí aktuálního vlákna se používá k provedení převodu.
szSrc
Řetězec Unicode nebo ANSI obsahující počáteční hodnotu. Národní prostředí aktuálního vlákna se používá k provedení převodu.
Poznámky
Konstruktor nastaví počáteční hodnotu CComCurrency::m_currency
a přijímá širokou škálu datových typů, včetně celých čísel, řetězců, čísel s plovoucí desetinnou čárkou, CURRENCY
proměnných a dalších CComCurrency
objektů. Pokud není zadána žádná hodnota, m_currency
nastaví se hodnota 0.
Pokud dojde k chybě, například přetečení, konstruktory, které nemají prázdnou specifikaci výjimky (throw()
) AtlThrow
s popisem HRESULT
chyby.
Při použití hodnot s plovoucí desetinou čárkou nebo dvojitých hodnot k přiřazení hodnoty nezapomeňte, že CComCurrency(10.50)
je ekvivalentní CComCurrency(10,5000)
, a ne CComCurrency(10,50)
.
CComCurrency::GetCurrencyPtr
Vrátí adresu datového člena m_currency
.
CURRENCY* GetCurrencyPtr() throw();
Vrácená hodnota
Vrátí adresu datového člena m_currency
.
CComCurrency::GetFraction
Voláním této metody vrátíte zlomkovou komponentu objektu CComCurrency
.
SHORT GetFraction() const;
Vrácená hodnota
Vrátí zlomkovou komponentu datového členu m_currency
.
Poznámky
Desetinná součást je 4ciferná celočíselná hodnota mezi -9999 (CY_MIN_FRACTION
) a +9999 (CY_MAX_FRACTION
). GetFraction
vrátí tuto hodnotu škálovanou o 1 0000 (CY_SCALE
). Hodnoty , CY_MIN_FRACTION
CY_MAX_FRACTION
a CY_SCALE
jsou definovány v atlcur.h.
Příklad
CComCurrency cur(10, 5000);
int nFract;
nFract = cur.GetFraction();
ATLASSERT(nFract == 5000);
CComCurrency::GetInteger
Voláním této metody získáte celočíselnou komponentu objektu CComCurrency
.
LONGLONG GetInteger() const;
Vrácená hodnota
Vrátí celočíselnou komponentu datového členu m_currency
.
Příklad
CComCurrency cur(10, 5000);
LONGLONG nInteger;
nInteger = cur.GetInteger();
ATLASSERT(nInteger == 10);
CComCurrency::m_currency
Datový CURRENCY
člen.
CURRENCY m_currency;
Poznámky
Tento člen uchovává měnu, ke které se přistupuje a manipuluje metodami této třídy.
CComCurrency::operator -
Tento operátor slouží k provádění odčítání objektu CComCurrency
.
CComCurrency operator-() const;
CComCurrency operator-(const CComCurrency& cur) const;
Parametry
cur
Objekt CComCurrency
.
Vrácená hodnota
CComCurrency
Vrátí objekt představující výsledek odčítání. Pokud dojde k chybě, například přetečení, tento operátor zavolá AtlThrow
s popisem HRESULT
chyby.
Příklad
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 - CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(6, 0));
CComCurrency::operator !=
Tento operátor porovnává dva objekty pro nerovnost.
bool operator!= (const CComCurrency& cur) const;
Parametry
cur
Objekt CComCurrency
, který se má porovnat.
Vrácená hodnota
Vrátí TRUE
, pokud porovnávaná položka není rovna objektu CComCurrency
; v opačném případě FALSE
.
Příklad
CComCurrency cur1(10, 5000), cur2(10, 5001);
ATLASSERT(cur1 != cur2);
CComCurrency::operator *
Tento operátor slouží k provádění násobení objektu CComCurrency
.
CComCurrency operator*(long nOperand) const;
CComCurrency operator*(const CComCurrency& cur) const;
Parametry
nOperand
Násobitel.
cur
Objekt CComCurrency
použitý jako násobitel.
Vrácená hodnota
CComCurrency
Vrátí objekt představující výsledek násobení. Pokud dojde k chybě, například přetečení, tento operátor zavolá AtlThrow
s popisem HRESULT
chyby.
Příklad
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 * 2;
ATLASSERT(cur2 == CComCurrency(21, 0));
CComCurrency::operator *=
Tento operátor slouží k provádění násobení objektu CComCurrency
a přiřazení výsledku.
const CComCurrency& operator*= (long nOperand);
const CComCurrency& operator*= (const CComCurrency& cur);
Parametry
nOperand
Násobitel.
cur
Objekt CComCurrency
použitý jako násobitel.
Vrácená hodnota
Vrátí aktualizovaný CComCurrency
objekt. Pokud dojde k chybě, například přetečení, tento operátor zavolá AtlThrow
s popisem HRESULT
chyby.
Příklad
CComCurrency cur(10, 5000);
cur *= 2;
ATLASSERT(cur == CComCurrency(21, 0));
CComCurrency::operator /
Tento operátor slouží k dělení objektu CComCurrency
.
CComCurrency operator/(long nOperand) const;
Parametry
nOperand
Dělitel.
Vrácená hodnota
CComCurrency
Vrátí objekt představující výsledek dělení. Pokud je dělitel 0, dojde k selhání kontrolního výrazu.
Příklad
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 / 10;
ATLASSERT(cur2 == CComCurrency(1, 500));
CComCurrency::operator /=
Tento operátor slouží k provedení dělení objektu CComCurrency
a přiřazení výsledku.
const CComCurrency& operator/= (long nOperand);
Parametry
nOperand
Dělitel.
Vrácená hodnota
Vrátí aktualizovaný CComCurrency
objekt. Pokud je dělitel 0, dojde k selhání kontrolního výrazu.
Příklad
CComCurrency cur(10, 5000);
cur /= 10;
ATLASSERT(cur == CComCurrency(1, 500));
CComCurrency::operator +
Tento operátor slouží k přidání objektu CComCurrency
.
CComCurrency operator+(const CComCurrency& cur) const;
Parametry
cur
Objekt CComCurrency
, který se má přidat do původního objektu.
Vrácená hodnota
CComCurrency
Vrátí objekt představující výsledek sčítání. Pokud dojde k chybě, například přetečení, tento operátor zavolá AtlThrow
s popisem HRESULT
chyby.
Příklad
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1 + CComCurrency(4, 5000);
ATLASSERT(cur2 == CComCurrency(15, 0));
CComCurrency::operator +=
Tento operátor slouží k provádění sčítání objektu CComCurrency
a přiřazení výsledku k aktuálnímu objektu.
const CComCurrency& operator+= (const CComCurrency& cur);
Parametry
cur
Objekt CComCurrency
Vrácená hodnota
Vrátí aktualizovaný CComCurrency
objekt. Pokud dojde k chybě, například přetečení, tento operátor zavolá AtlThrow
s popisem HRESULT
chyby.
Příklad
CComCurrency cur(10, 2500);
cur += CComCurrency(4, 2500);
ATLASSERT(cur == CComCurrency(14, 5000));
CComCurrency::operator <
Tento operátor porovnává dva CComCurrency
objekty, aby určil menší.
bool operator<(const CComCurrency& cur) const;
Parametry
cur
Objekt CComCurrency
.
Vrácená hodnota
Vrátí TRUE
, pokud je první objekt menší než druhý, FALSE
jinak.
Příklad
CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 < cur2);
CComCurrency::operator <=
Tento operátor porovnává dva CComCurrency
objekty k určení rovnosti nebo menší.
bool operator<= (const CComCurrency& cur) const;
Parametry
cur
Objekt CComCurrency
.
Vrácená hodnota
Vrátí TRUE
, pokud je první objekt menší nebo roven druhé, FALSE
jinak.
Příklad
CComCurrency cur1(10, 4900);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 <= cur2);
CComCurrency::operator =
Tento operátor přiřadí CComCurrency
objekt nové hodnotě.
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);
Parametry
curSrc
Objekt CComCurrency
.
cySrc
Proměnná typu CURRENCY
.
sSrc
, fSrc
, , bSrc
dSrc
cSrc
lSrc
usSrc
, , ulSrc
dSrc
Číselná hodnota, CComCurrency
která se má objektu přiřadit.
Vrácená hodnota
Vrátí aktualizovaný CComCurrency
objekt. Pokud dojde k chybě, například přetečení, tento operátor zavolá AtlThrow
s popisem HRESULT
chyby.
Příklad
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 -=
Tento operátor slouží k provádění odčítání objektu CComCurrency
a přiřazení výsledku.
const CComCurrency& operator-= (const CComCurrency& cur);
Parametry
cur
Objekt CComCurrency
.
Vrácená hodnota
Vrátí aktualizovaný CComCurrency
objekt. Pokud dojde k chybě, například přetečení, tento operátor zavolá AtlThrow
s popisem HRESULT
chyby.
Příklad
CComCurrency cur(10, 5000);
cur -= CComCurrency(4, 5000);
ATLASSERT(cur == CComCurrency(6, 0));
CComCurrency::operator ==
Tento operátor porovnává dva CComCurrency
objekty pro rovnost.
bool operator== (const CComCurrency& cur) const;
Parametry
cur
Objekt CComCurrency
, který chcete porovnat.
Vrácená hodnota
Vrátí TRUE
, pokud jsou objekty stejné (tj m_currency
. datové členy, celé číslo i zlomky, v obou objektech mají stejnou hodnotu), FALSE
jinak.
Příklad
CComCurrency cur1(10, 5000), cur2;
cur2 = cur1;
ATLASSERT(cur1 == cur2);
CComCurrency::operator >
Tento operátor porovná dva CComCurrency
objekty a určí větší objekty.
bool operator>(const CComCurrency& cur) const;
Parametry
cur
Objekt CComCurrency
.
Vrácená hodnota
Vrátí TRUE
, pokud je první objekt větší než druhý, FALSE
jinak.
Příklad
CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 > cur2);
CComCurrency::operator >=
Tento operátor porovná dva CComCurrency
objekty a určí rovnost nebo větší.
bool operator>= (const CComCurrency& cur) const;
Parametry
cur
Objekt CComCurrency
.
Vrácená hodnota
Vrátí TRUE
, pokud je první objekt větší nebo roven druhé, FALSE
jinak.
Příklad
CComCurrency cur1(10, 5100);
CComCurrency cur2(10, 5000);
ATLASSERT(cur1 >= cur2);
CComCurrency::operator CURRENCY
Tyto operátory slouží k přetypování CComCurrency
objektu CURRENCY
na datový typ.
operator CURRENCY&() throw();
operator const CURRENCY&() const throw();
Vrácená hodnota
Vrátí odkaz na CURRENCY
objekt.
Příklad
CComCurrency cur(10, 5000);
CURRENCY cy = static_cast<CURRENCY>(cur); // Note that explicit cast is not necessary
ATLASSERT(cy.int64 == 105000);
CComCurrency::Round
Voláním této metody zaokrouhlíte měnu na zadaný počet desetinných míst.
HRESULT Roundint nDecimals);
Parametry
nDecimals
Počet číslic, na které m_currency
se zaokrouhlí, v rozsahu 0 až 4.
Vrácená hodnota
Vrátí S_OK
úspěch nebo chybu při selhání HRESULT
.
Příklad
CComCurrency cur(10, 1234);
cur.Round(3);
ATLASSERT(cur.GetFraction() == 1230);
CComCurrency::SetFraction
Voláním této metody nastavíte zlomkovou komponentu objektu CComCurrency
.
HRESULT SetFraction(SHORT nFraction);
Parametry
nFraction
Hodnota, která se přiřadí zlomkové komponentě datového členu m_currency
. Znaménko zlomkové komponenty musí být stejné jako celočíselná komponenta a hodnota musí být v rozsahu -9999 (CY_MIN_FRACTION
) až +9999 (CY_MAX_FRACTION
).
Vrácená hodnota
Vrátí S_OK
úspěch nebo chybu při selhání HRESULT
.
Příklad
CComCurrency cur(10, 0);
cur.SetFraction(5000);
ATLASSERT(CComCurrency(10, 5000) == cur);
CComCurrency::SetInteger
Voláním této metody nastavíte celočíselnou komponentu objektu CComCurrency
.
HRESULT SetInteger(LONGLONG nInteger);
Parametry
nInteger
Hodnota, která se má přiřadit k celočíselné komponentě datového členu m_currency
. Znaménko celočíselné součásti musí odpovídat znaménku existující zlomkové komponenty.
nInteger
musí být v rozsahu CY_MIN_INTEGER
, včetně CY_MAX_INTEGER
. Tyto hodnoty jsou definovány v atlcur.h.
Vrácená hodnota
Vrátí S_OK
úspěch nebo chybu při selhání HRESULT
.
Příklad
CComCurrency cur(0, 5000);
cur.SetInteger(10);
ATLASSERT(CComCurrency(10, 5000) == cur);