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_FRACTION
CY_MAX_FRACTION
) 之間的整數值。 方法 CComCurrency::GetFraction
會傳回以 10000CY_SCALE
() 因數縮放的值。
指定物件的整數和小數元件 CComCurrency
時,請記住小數位件是範圍0到9999中的數位。 處理美元等貨幣時,這一考慮很重要。 貨幣金額通常只使用小數點之後的兩個有效位數來表示。 即使最後兩個數位未顯示,也必須將其納入考慮。
值 | 可能的 CComCurrency 指派 |
---|---|
$10.50 | CComCurrency(10,5000) 或 CComCurrency(10.50) |
$10.05 | CComCurrency(10,500) 或 CComCurrency(10.05) |
、 CY_MAX_FRACTION
和 CY_SCALE
值CY_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
的變數。
bSrc
、dSrc
、、lSrc
fSrc
、sSrc
、、、 ulSrc
usSrc
提供給成員變數 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_FRACTION
CY_MAX_FRACTION
) 之間的 4 位數整數值。 GetFraction
會傳回以 10000 (CY_SCALE
) 縮放的這個值。 、 CY_MAX_FRACTION
和 CY_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
的變數。
sSrc
、fSrc
、lSrc
、bSrc
、usSrc
、dSrc
、cSrc
、 ulSrc
dSrc
要指派給 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);