共用方式為


CComCurrency 類別

CComCurrency 具有建立和管理物件的方法和 CURRENCY 運算符。

語法

class CComCurrency;

成員

公用建構函式

名稱 描述
CComCurrency::CComCurrency CComCurrency 物件的建構函式。

公用方法

名稱 描述
CComCurrency::GetCurrencyPtr 傳回 m_currency 資料成員的位址。
CComCurrency::GetFraction 呼叫此方法以傳回 CComCurrency 物件的小數部分。
CComCurrency::GetInteger 呼叫此方法以傳回 CComCurrency 物件的整數部分。
CComCurrency::Round 呼叫此方法將 CComCurrency 物件四捨五入到最接近的整數值。
CComCurrency::SetFraction 呼叫此方法以設定 CComCurrency 物件的小數部分。
CComCurrency::SetInteger 呼叫此方法以設定 CComCurrency 物件的整數部分。

公用運算子

名稱 描述
CComCurrency::operator - 此運算子用在 CComCurrency 物件上執行減法。
CComCurrency::operator != 比較兩個 CComCurrency 物件是否不相等。
CComCurrency::operator * 此運算子用在 CComCurrency 物件上執行乘法。
CComCurrency::operator *= 此運算子用在 CComCurrency 物件上執行乘法並指派結果。
CComCurrency::operator / 此運算子用在 CComCurrency 物件上執行除法。
CComCurrency::operator /= 此運算子用在 CComCurrency 物件上執行除法並指派結果。
CComCurrency::operator + 此運算子用在 CComCurrency 物件上執行加法。
CComCurrency::operator += 此運算子用在 CComCurrency 物件上執行加法並指派結果給目前物件。
CComCurrency::operator < 此運算子比較兩個 CComCurrency 物件來判斷何者較小。
CComCurrency::operator <= 此運算子比較兩個 CComCurrency 物件來判斷是否相等或何者較小。
CComCurrency::operator = 此運算子將 CComCurrency 物件指派給新的值。
CComCurrency::operator -= 此運算子用在 CComCurrency 物件上執行減法並指派結果。
CComCurrency::operator == 此運算子比較兩個 CComCurrency 物件是否相等。
CComCurrency::operator > 此運算子比較兩個 CComCurrency 物件來判斷何者較大。
CComCurrency::operator >= 此運算子比較兩個 CComCurrency 物件來判斷是否相等或何者較大。
CComCurrency::operator CURRENCY 轉換 CURRENCY 物件。

公用數據成員

名稱 描述
CComCurrency::m_currency 類別 CURRENCY 實例所建立的變數。

備註

CComCurrency 是數據類型的 CURRENCY 包裝函式。 CURRENCY 會實作為8位元組二的補碼整數值,以10,000縮放。 此縮放比例提供小數點左邊 15 位數的固定點數,右邊有 4 位數。 數據類型 CURRENCY 適用於涉及金錢的計算,或對於精確度很重要的任何固定點計算。

包裝 CComCurrency 函式會實作這個固定點類型的算術、指派和比較作業。 已選取支援的應用程式來控制固定點計算期間可能發生的四捨五入錯誤。

物件 CComCurrency 會以兩個元件的形式,提供小數點任一端數位的存取權:整數位元件,其會將值儲存在小數點左邊,而小數點則儲存小數點右邊的值。 小數位元件會在內部儲存為介於 -9999 () 和 +9999 (CY_MIN_FRACTIONCY_MAX_FRACTION) 之間的整數值。 方法 CComCurrency::GetFraction 會傳回以 10000CY_SCALE () 因數縮放的值。

指定物件的整數和小數元件 CComCurrency 時,請記住小數位件是範圍0到9999中的數位。 處理美元等貨幣時,這一考慮很重要。 貨幣金額通常只使用小數點之後的兩個有效位數來表示。 即使最後兩個數位未顯示,也必須將其納入考慮。

ReplTest1 可能的 CComCurrency 指派
$10.50 CComCurrency(10,5000)CComCurrency(10.50)
$10.05 CComCurrency(10,500)CComCurrency(10.05)

CY_MAX_FRACTIONCY_SCALECY_MIN_FRACTION定義於 atlcur.h 中。

需求

標頭: atlcur.h

CComCurrency::CComCurrency

建構函式。

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

參數

curSrc
現有的 CComCurrency 物件。

cySrc
類型為 CURRENCY 的變數。

bSrcdSrc、、lSrcfSrcsSrc、、、 ulSrcusSrc
提供給成員變數 m_currency的初始值。

cSrc
字元,包含提供給成員變數 m_currency的初始值。

nInteger, nFraction
初始貨幣值的整數和小數位元件。 如需詳細資訊,請參閱概 CComCurrency 觀。

pDispSrc
IDispatch指標。

varSrc
類型為 VARIANT 的變數。 目前線程的地區設定是用來執行轉換。

szSrc
包含初始值的 Unicode 或 ANSI 字串。 目前線程的地區設定是用來執行轉換。

備註

建構函式會設定 的初始值 CComCurrency::m_currency,並接受各種不同的數據類型,包括整數、字串、浮點數、 CURRENCY 變數和其他 CComCurrency 物件。 如果未提供任何值, m_currency 則會設定為 0。

如果發生錯誤,例如溢位,則建構函式缺少空的例外狀況規格 (throw()) 呼叫 AtlThrow ,並 HRESULT 描述錯誤。

使用浮點或雙精度浮點值指派值時,請記住,這 CComCurrency(10.50) 相當於 CComCurrency(10,5000),而不是 CComCurrency(10,50)

CComCurrency::GetCurrencyPtr

傳回 m_currency 資料成員的位址。

CURRENCY* GetCurrencyPtr() throw();

傳回值

傳回數據成員的 m_currency 位址

CComCurrency::GetFraction

呼叫這個方法可傳回 物件的分數元件 CComCurrency

SHORT GetFraction() const;

傳回值

傳回數據成員的小 m_currency 數位元件。

備註

小數位元件是介於 -9999 () 和 +9999 (CY_MIN_FRACTIONCY_MAX_FRACTION) 之間的 4 位數整數值。 GetFraction 會傳回以 10000 (CY_SCALE) 縮放的這個值。 、 CY_MAX_FRACTIONCY_SCALE 的值CY_MIN_FRACTION定義於 atlcur.h 中。

範例

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

CComCurrency::GetInteger

呼叫此方法以取得 物件的整數位元件 CComCurrency

LONGLONG GetInteger() const;

傳回值

傳回數據成員的 m_currency 整數位元件。

範例

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

CComCurrency::m_currency

數據 CURRENCY 成員。

CURRENCY m_currency;

備註

這個成員會保存由這個類別的方法存取和操作的貨幣。

CComCurrency::operator -

此運算子用在 CComCurrency 物件上執行減法。

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

參數

cur
CComCurrency 物件。

傳回值

CComCurrency傳回 物件,表示減法的結果。 如果發生錯誤,例如溢位,則此運算符會呼叫 AtlThrow ,並 HRESULT 描述錯誤。

範例

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

CComCurrency::operator !=

這個運算子會比較兩個物件是否不相等。

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

參數

cur
要比較的 CComCurrency 物件。

傳回值

如果比較的項目不等於物件,CComCurrency則傳TRUE回 ,FALSE否則傳回 。

範例

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

CComCurrency::operator *

此運算子用在 CComCurrency 物件上執行乘法。

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

參數

nOperand
乘數。

cur
CComCurrency做為乘數的物件。

傳回值

CComCurrency傳回 物件,表示乘法的結果。 如果發生錯誤,例如溢位,則此運算符會呼叫 AtlThrow ,並 HRESULT 描述錯誤。

範例

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

CComCurrency::operator *=

此運算子用在 CComCurrency 物件上執行乘法並指派結果。

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

參數

nOperand
乘數。

cur
CComCurrency做為乘數的物件。

傳回值

傳回更新 CComCurrency 的物件。 如果發生錯誤,例如溢位,則此運算符會呼叫 AtlThrow ,並 HRESULT 描述錯誤。

範例

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

CComCurrency::operator /

此運算子用在 CComCurrency 物件上執行除法。

CComCurrency operator/(long nOperand) const;

參數

nOperand
除數。

傳回值

CComCurrency傳回 物件,表示除法的結果。 如果除數為 0,就會發生判斷提示失敗。

範例

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

CComCurrency::operator /=

此運算子用在 CComCurrency 物件上執行除法並指派結果。

const CComCurrency& operator/= (long nOperand);

參數

nOperand
除數。

傳回值

傳回更新 CComCurrency 的物件。 如果除數為 0,就會發生判斷提示失敗。

範例

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

CComCurrency::operator +

此運算子用在 CComCurrency 物件上執行加法。

CComCurrency operator+(const CComCurrency& cur) const;

參數

cur
CComCurrency 加入至原始物件的物件。

傳回值

CComCurrency傳回 物件,表示加法的結果。 如果發生錯誤,例如溢位,則此運算符會呼叫 AtlThrow ,並 HRESULT 描述錯誤。

範例

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

CComCurrency::operator +=

此運算子用在 CComCurrency 物件上執行加法並指派結果給目前物件。

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

參數

cur
CComCurrency 物件。

傳回值

傳回更新 CComCurrency 的物件。 如果發生錯誤,例如溢位,則此運算符會呼叫 AtlThrow ,並 HRESULT 描述錯誤。

範例

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

CComCurrency::operator <

此運算子比較兩個 CComCurrency 物件來判斷何者較小。

bool operator<(const CComCurrency& cur) const;

參數

cur
CComCurrency 物件。

傳回值

如果第一個物件小於第二個物件,則傳 TRUE 回 , FALSE 否則傳回 。

範例

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

CComCurrency::operator <=

此運算子比較兩個 CComCurrency 物件來判斷是否相等或何者較小。

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

參數

cur
CComCurrency 物件。

傳回值

如果第一個物件小於或等於第二個,則傳 TRUE 回 , FALSE 否則傳回 。

範例

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

CComCurrency::operator =

此運算子將 CComCurrency 物件指派給新的值。

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

參數

curSrc
CComCurrency 物件。

cySrc
類型為 CURRENCY 的變數。

sSrcfSrclSrcbSrcusSrcdSrccSrculSrcdSrc
要指派給 CComCurrency 對象的數值。

傳回值

傳回更新 CComCurrency 的物件。 如果發生錯誤,例如溢位,則此運算符會呼叫 AtlThrow ,並 HRESULT 描述錯誤。

範例

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

此運算子用在 CComCurrency 物件上執行減法並指派結果。

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

參數

cur
CComCurrency 物件。

傳回值

傳回更新 CComCurrency 的物件。 如果發生錯誤,例如溢位,則此運算符會呼叫 AtlThrow ,並 HRESULT 描述錯誤。

範例

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

CComCurrency::operator ==

此運算子比較兩個 CComCurrency 物件是否相等。

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

參數

cur
CComCurrency 比較的物件。

傳回值

如果物件相等,則傳 TRUE 回 ; m_currency 否則,如果兩個物件中的數據成員、整數和小數點值相同, FALSE 則傳回 。

範例

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

CComCurrency::operator >

此運算子比較兩個 CComCurrency 物件來判斷何者較大。

bool operator>(const CComCurrency& cur) const;

參數

cur
CComCurrency 物件。

傳回值

如果第一個物件大於第二個物件,則傳 TRUE 回 , FALSE 否則傳回 。

範例

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

CComCurrency::operator >=

此運算子比較兩個 CComCurrency 物件來判斷是否相等或何者較大。

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

參數

cur
CComCurrency 物件。

傳回值

如果第一個物件大於或等於第二個物件,則傳 TRUE 回 , FALSE 否則傳回 。

範例

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

CComCurrency::operator CURRENCY

這些運算子可用來將 CComCurrency 物件 CURRENCY 轉換成數據類型。

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

傳回值

傳回 對象的參考 CURRENCY

範例

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

CComCurrency::Round

呼叫這個方法,將貨幣四捨五入為指定的小數位數。

HRESULT Roundint nDecimals);

參數

nDecimals
範圍 0 到 4 中將四捨五入的位數 m_currency

傳回值

S_OK傳回成功,或失敗時發生錯誤HRESULT

範例

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

CComCurrency::SetFraction

呼叫此方法以設定 CComCurrency 物件的小數部分。

HRESULT SetFraction(SHORT nFraction);

參數

nFraction
要指派給數據成員小數部分的值 m_currency 。 小數部分的符號必須與整數元件相同,而且值必須介於 -9999 (CY_MIN_FRACTION) 到 +9999 之間。CY_MAX_FRACTION

傳回值

S_OK傳回成功,或失敗時發生錯誤HRESULT

範例

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

CComCurrency::SetInteger

呼叫此方法以設定 CComCurrency 物件的整數部分。

HRESULT SetInteger(LONGLONG nInteger);

參數

nInteger
要指派給數據成員之 m_currency 整數位元件的值。 整數位元件的符號必須符合現有小數位元件的符號。

nInteger 範圍中必須 CY_MIN_INTEGER 包含 CY_MAX_INTEGER。 這些值定義於 atlcur.h 中。

傳回值

S_OK傳回成功,或失敗時發生錯誤HRESULT

範例

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

另請參閱

COleCurrency 類別
CURRENCY
類別概觀