次の方法で共有


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 != 2 つの CComCurrency オブジェクトが等しくないかどうかを比較します。
CComCurrency::operator * この演算子は、CComCurrency オブジェクトで乗算を実行するために使用します。
CComCurrency::operator *= この演算子は、CComCurrency オブジェクトで乗算を実行し、オブジェクトに結果を代入するために使用します。
CComCurrency::operator / この演算子は、CComCurrency オブジェクトで除算を実行するために使用します。
CComCurrency::operator /= この演算子は、CComCurrency オブジェクトで除算を実行し、オブジェクトに結果を代入するために使用します。
CComCurrency::operator + この演算子は、CComCurrency オブジェクトで加算を実行するために使用します。
CComCurrency::operator += この演算子は、CComCurrency オブジェクトで加算を実行し、結果を現在のオブジェクトに代入するために使用します。
CComCurrency::operator < この演算子は、2 つの CComCurrency オブジェクトを比較して、小さい方を決定します。
CComCurrency::operator <= この演算子では、2 つの CComCurrency オブジェクトを比較して、等しいかどうか、または小さい方を決定します。
CComCurrency::operator = この演算子は、CComCurrency オブジェクトに新しい値を割り当てます。
CComCurrency::operator -= この演算子は、CComCurrency オブジェクトで減算を実行し、オブジェクトに結果を代入するために使用します。
CComCurrency::operator == この演算子は、2 つの CComCurrency オブジェクトが等しいかどうかを比較します。
CComCurrency::operator > この演算子は、2 つの CComCurrency オブジェクトを比較して、大きい方を決定します。
CComCurrency::operator >= この演算子は、2 つの CComCurrency オブジェクトを比較して、等しいかどうか、または大きい方を決定します。
CComCurrency::operator CURRENCY CURRENCY オブジェクトをキャストします。

パブリック データ メンバー

名前 説明
CComCurrency::m_currency クラス インスタンスによって作成された CURRENCY 変数。

解説

CComCurrency は、CURRENCY データ型のラッパーです。 CURRENCY は、10,000 倍した値を 8 バイトの 2 の補数で表現した整数値として実装されます。 このスケーリングは、15 桁の整数部と 4 桁の小数部を持つ固定小数点数として表現されます。 CURRENCY データ型は、通貨に関連する計算、または精度が重要となる固定小数点数の計算に役立ちます。

CComCurrency ラッパーでは、この固定小数点型の算術、代入、および比較演算を実装します。 固定小数点数の計算中に発生する可能性のある丸め誤差を制御するために、サポートするアプリケーションが選択されています。

CComCurrency オブジェクトは、小数点の左側に値を格納する整数部と小数点の右側に値を格納する小数部という 2 つの構成要素を使用した形で、小数点の左側と右側の数値にアクセスできます。 小数部は、-9999 (CY_MIN_FRACTION) から +9999 (CY_MAX_FRACTION) までの整数値として内部に格納されます。 CComCurrency::GetFraction メソッドからは、係数 10000 (CY_SCALE) でスケーリングされた値が返されます。

CComCurrency オブジェクトの整数部と小数部を指定した場合、小数部は 0 から 9999 の範囲の数値であることに注意してください。 この考慮事項は、米ドルなどの通貨を扱う場合に重要です。 ドルの金額は一般に、小数点の後の有効桁数に 2 桁のみを使用して表されます。 最後の 2 桁が表示されていない場合でも考慮する必要があります。

考えられる CComCurrency の割り当て
$10.50 CComCurrency(10,5000) または CComCurrency(10.50)
$10.05 CComCurrency(10,500) または CComCurrency(10.05)

CY_MIN_FRACTIONCY_MAX_FRACTIONCY_SCALE は 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 型の変数。

bSrcdSrcfSrclSrcsSrculSrcusSrc
メンバー変数 m_currency に指定された初期値。

cSrc
メンバー変数 m_currency に指定された初期値を含む文字。

nInteger, nFraction
初期通貨値の整数部と小数部。 詳細については、CComCurrency の概要を参照してください。

pDispSrc
IDispatch ポインター。

varSrc
VARIANT 型の変数。 変換を実行するために、現在のスレッドのロケールが使用されます。

szSrc
初期値を含む Unicode または ANSI 文字列。 変換を実行するために、現在のスレッドのロケールが使用されます。

解説

コンストラクターでは CComCurrency::m_currency の初期値を設定し、整数、文字列、浮動小数点数、CURRENCY 変数、およびその他の CComCurrency オブジェクトを含む、さまざまなデータ型を受け入れます。 値が指定されていない場合、m_currency は 0 に設定されます。

オーバーフローなどのエラーが発生した場合、空の例外指定 (throw()) がないコンストラクターでは、エラーを説明する HRESULT を使用して AtlThrow を呼び出します。

浮動小数点または倍精度値を使用して値を代入する場合、CComCurrency(10.50) は、CComCurrency(10,50) ではなく、CComCurrency(10,5000) と等価であることに注意してください。

CComCurrency::GetCurrencyPtr

m_currency データ メンバーのアドレスを返します。

CURRENCY* GetCurrencyPtr() throw();

戻り値

m_currency データ メンバーのアドレスを返します

CComCurrency::GetFraction

CComCurrency オブジェクトの小数部を返すには、このメソッドを呼び出します。

SHORT GetFraction() const;

戻り値

m_currencyデータ メンバーの小数部を返します。

解説

小数部は、-9999 (CY_MIN_FRACTION) から +9999 (CY_MAX_FRACTION) までの 4 桁の整数値です。 GetFraction は、この値を 10000 (CY_SCALE) でスケーリングしたものを返します。 CY_MIN_FRACTIONCY_MAX_FRACTIONCY_SCALE の値は 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 オブジェクトを返します。 オーバーフローなどのエラーが発生した場合、この演算子では、エラーを説明する HRESULT を使用して AtlThrow を呼び出します。

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

CComCurrency::operator !=

この演算子では、2 つのオブジェクトが等しくないかどうかを比較します。

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 オブジェクトを返します。 オーバーフローなどのエラーが発生した場合、この演算子では、エラーを説明する HRESULT を使用して AtlThrow を呼び出します。

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 オブジェクトを返します。 オーバーフローなどのエラーが発生した場合、この演算子では、エラーを説明する HRESULT を使用して AtlThrow を呼び出します。

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 オブジェクトを返します。 オーバーフローなどのエラーが発生した場合、この演算子では、エラーを説明する HRESULT を使用して AtlThrow を呼び出します。

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 オブジェクトを返します。 オーバーフローなどのエラーが発生した場合、この演算子では、エラーを説明する HRESULT を使用して AtlThrow を呼び出します。

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

CComCurrency::operator <

この演算子は、2 つの CComCurrency オブジェクトを比較して、小さい方を決定します。

bool operator<(const CComCurrency& cur) const;

パラメーター

cur
CComCurrency オブジェクト。

戻り値

最初のオブジェクトが 2 番目のものより小さい場合は TRUE、それ以外の場合は FALSE を返します。

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

CComCurrency::operator <=

この演算子では、2 つの CComCurrency オブジェクトを比較して、等しいかどうか、または小さい方を決定します。

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

パラメーター

cur
CComCurrency オブジェクト。

戻り値

最初のオブジェクトが 2 番目のもの以下の場合は 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 オブジェクトを返します。 オーバーフローなどのエラーが発生した場合、この演算子では、エラーを説明する HRESULT を使用して AtlThrow を呼び出します。

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 オブジェクトを返します。 オーバーフローなどのエラーが発生した場合、この演算子では、エラーを説明する HRESULT を使用して AtlThrow を呼び出します。

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

CComCurrency::operator ==

この演算子は、2 つの CComCurrency オブジェクトが等しいかどうかを比較します。

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

パラメーター

cur
比較する CComCurrency オブジェクト。

戻り値

オブジェクトが等しい (つまり、両方のオブジェクトの m_currency データ メンバーの整数部と小数部の両方の値が同じである) 場合は TRUE、それ以外の場合は FALSE を返します。

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

CComCurrency::operator >

この演算子は、2 つの CComCurrency オブジェクトを比較して、大きい方を決定します。

bool operator>(const CComCurrency& cur) const;

パラメーター

cur
CComCurrency オブジェクト。

戻り値

最初のオブジェクトが 2 番目のものより大きい場合は TRUE、それ以外の場合は FALSE を返します。

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

CComCurrency::operator >=

この演算子は、2 つの CComCurrency オブジェクトを比較して、等しいかどうか、または大きい方を決定します。

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

パラメーター

cur
CComCurrency オブジェクト。

戻り値

最初のオブジェクトが 2 番目のもの以上の場合は 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
m_currency が丸められる桁数 (0 から 4 の範囲)。

戻り値

成功した場合は 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
クラスの概要