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_FRACTION
、CY_MAX_FRACTION
、CY_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
型の変数。
bSrc
、 dSrc
、 fSrc
、 lSrc
、 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()
) がないコンストラクターでは、エラーを説明する 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_FRACTION
、CY_MAX_FRACTION
、CY_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
型の変数。
sSrc
、 fSrc
、 lSrc
、 bSrc
、 usSrc
、 dSrc
、 cSrc
、 ulSrc
、 dSrc
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);