13.22 Numberクラス
Numberクラスは、精度に制限があり符号付きで10を基数とする数値を処理します。Numberは、10進数で38桁の精度が保証されます。次に示す範囲内の正の数値はすべて、完全な38桁の精度で表現できます。
10^-130
および
9.99999999999999999999999999999999999999*10^125
表現可能な負の数値の範囲は、正の数値と対称的になります。
数値0 (ゼロ)を正確に表現できます。また、Oracle NUMBERでは、正の無限大と負の無限大を表現できます。一般的に、これらの数値表現はオーバーフローを示すために使用されます。
内部格納タイプは不透明でプライベートです。Numberインスタンスの作成時に、位取りは保持されません。
NumberはNaNの概念には対応していませんし、IEEE-754-85準拠でもありません。Numberは、+Infinityおよび-Infinityには対応していません。
Numberクラスからのオブジェクトは、クライアント側の数値計算でスタンドアロン・クラス・オブジェクトとして使用できます。データベースからフェッチする場合やデータベースに設定する場合にも使用できます。
例13-10 Numberオブジェクトを取り出して使用する方法
この例では、データベースからのNumber列値の取出し、Numberオブジェクトを使用するバインド、およびスタンドアロンNumberオブジェクトを使用する計算が示されています。
/* Create a connection */
Environment *env = Environment::createEnvironment(Environment::DEFAULT);
Connection *conn = Connection(user, passwd, db);
/* Create a statement and associate a select clause with it */
string sqlStmt = "SELECT department_id FROM DEPARTMENTS";
Statement *stmt = conn->createStatement(sqlStmt);
/* Run the statement to get a result set */
ResultSet *rset = stmt->executeQuery();
while(rset->next())
{
Number deptId = rset->getNumber(1);
/* Display the department id with the format string 9,999 */
cout << "Department Id" << deptId.toText(env, "9,999");
/* Use the number obtained as a bind value in the following query */
stmt->setSQL("SELECT * FROM EMPLOYEES WHERE department_id = :x");
stmt->setNumber(1, deptId);
ResultSet *rset2 = stmt->executeQuery();
.
.
}
/* Using a Number object as a standalone and the operations on them */
/* Create a number to a double value */
double value = 2345.123;
Number nu1 (value);
/* Some common Number methods */
Number abs = nu1.abs(); /* absolute value */
Number sqrt = nu1.squareroot(); /* square root */
Environment *env = Environment::createEnvironment();
//create a null year-month interval
IntervalYM ym
if(ym.isNull())
cout << "\n ym is null";
//assign a non null value to ym
IntervalYM anotherYM(env, "10-30");
ym = anotherYM;
//now all operations are valid on ym
int yr = ym.getYear();
表13-30 Numberメソッドの概要
| メソッド | 概要 |
|---|---|
|
|
|
|
数値の絶対値を戻します。 |
|
|
数値のアーク・コサインを戻します。 |
|
|
数値のアーク・サインを戻します。 |
|
|
数値のアーク・タンジェントを戻します。 |
|
|
入力数値 |
|
|
数値の値以上で、最小の整数値を戻します。 |
|
|
数値のコサインを戻します。 |
|
|
数値の自然指数を戻します。 |
|
|
数値の値以下で、最大の整数値を戻します。 |
|
|
|
|
|
指定された数値文字列、書式文字列およびNLSパラメータからNumberを戻します。 |
|
|
数値の双曲線コサインを戻します。 |
|
|
数値の双曲線サインを戻します。 |
|
|
数値の双曲線タンジェントを戻します。 |
|
|
指定された整数値で累乗した数値を戻します。 |
|
|
|
|
|
数値の自然対数を戻します。 |
|
|
指定された底に対する数値の対数を戻します。 |
|
|
|
|
|
|
|
|
2つの |
|
|
2つの |
|
|
2つの |
|
|
2つの |
|
|
|
|
|
2つの |
|
|
数値が別の数値未満かどうかをチェックします。 |
|
|
数値が別の数値以下かどうかをチェックします。 |
|
|
数値が別の数値を超えているかどうかをチェックします。 |
|
|
数値が別の数値以上かどうかをチェックします。 |
|
|
ある数値を別の数値に割り当てます。 |
|
|
2つの数値が等しいかどうかをチェックします。 |
|
|
2つの数値が等しくないかどうかをチェックします。 |
|
|
乗算による割当てを行います。 |
|
|
除算による割当てを行います。 |
|
|
余りによる割当てを行います。 |
|
|
加算による割当てを行います。 |
|
|
減算による割当てを行います。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
指定された値 |
|
|
指定された値の符号を戻します。指定された値<0の場合は-1、指定された値==0の場合は0 (ゼロ)、指定された値>0の場合は1を戻します。 |
|
|
数値のサインを戻します。 |
|
|
数値の平方根を戻します。 |
|
|
数値のタンジェントを戻します。 |
|
|
|
|
|
数値を、書式とNLSパラメータに基づいて書式化した文字列で戻します。 |
|
|
|
13.22.1 Number()
Numberクラスのコンストラクタです。
| 構文 | 説明 |
|---|---|
Number(); |
デフォルトのコンストラクタです。 |
Number( const Number &srcNum); |
|
Number( long double &val); |
システム固有のlong double型を |
Number( double val); |
システム固有のdouble型を |
Number( float val); |
システム固有のfloat型を |
Number( long val); |
システム固有のlong型を |
Number( int val); |
システム固有のint型を |
Number( shot val); |
システム固有のshort型を |
Number( char val); |
システム固有のchar型を |
Number( signed char val); |
システム固有のsigned char型を |
Number( unsigned long val); |
システム固有のunsigned long型を |
Number( unsigned int val); |
システム固有のunsigned int型を |
Number( unsigned short val); |
システム固有のunsigned short型を |
Number( unsigned char val); |
システム固有の符号なし文字配列を |
| パラメータ | 説明 |
|---|---|
srcNum |
新しい |
val |
|
13.22.6 arcTan2()
このメソッドは、パラメータを指定してNumberオブジェクトのアーク・タンジェントを戻します。戻される値はatan2 (val, x)で、valは指定されたパラメータ、xは現行のNumberオブジェクトです。
構文
const Number arcTan2( const Number &val) const;
| パラメータ | 説明 |
|---|---|
val |
arcTangent関数の |
13.22.11 fromBytes()
このメソッドは、指定されたバイト文字列で表現したNumberオブジェクトを戻します。
構文
void fromBytes( const Bytes &str);
| パラメータ | 説明 |
|---|---|
str |
バイト文字列を指定します。 |
13.22.12 fromText()
NumberオブジェクトをstringまたはUStringによって表される値に設定します。
値はfmtおよびnlsParamパラメータに基づいて解析されます。nlsParamが渡されない場合は、envpパラメータのグローバリゼーション・サポート設定が使用されます。
関連項目:
TO_NUMBERの詳細は、『Oracle Database SQL言語リファレンス』 を参照してください。
| 構文 | 説明 |
|---|---|
void fromText( const Environment *envp, const string &number, const string &fmt, const string &nlsParam = ""); |
|
void fromText( const Environment *envp, const UString &number, const UString &fmt, const UString &nlsParam); |
|
| パラメータ | 説明 |
|---|---|
envp |
OCCI環境を指定します。 |
number |
|
fmt |
書式文字列を指定します。 |
nlsParam |
NLSパラメータ文字列を指定します。 |
13.22.16 intPower()
このメソッドは、指定された値で累乗した数値オブジェクトの値を持つNumberを戻します。
構文
const Number intPower( int val) const;
| パラメータ | 説明 |
|---|---|
val |
数値を累乗する数を指定します。 |
13.22.17 isNull()
このメソッドは、NumberオブジェクトがNULLかどうかをテストします。NumberオブジェクトがNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isNull() const;
13.22.19 log()
このメソッドは、指定されたパラメータを底としてNumberオブジェクトの対数を戻します。
構文
const Number log( const Number &val) const;
| パラメータ | 説明 |
|---|---|
val |
対数計算に使用する底を指定します。 |
13.22.20 operator++()
単項のoperator++()です。これは後置演算子です。
| 構文 | 説明 |
|---|---|
Number& operator++(); |
このメソッドは、 |
const Number operator++( int incr); |
このメソッドは、指定された整数分増加した |
| パラメータ | 説明 |
|---|---|
incr |
|
13.22.21 operator--()
単項のoperator--()です。これは前置演算子です。
| 構文 | 説明 |
|---|---|
Number& operator--(); |
このメソッドは、 |
const Number operator--( int decr); |
このメソッドは、指定された整数分減少した |
| パラメータ | 説明 |
|---|---|
decr |
Numberオブジェクトの減分の数値を指定します。 |
13.22.22 operator*()
このメソッドは、指定されたパラメータの積を戻します。
構文
Number operator*( const Number &first,
const Number &second);
| パラメータ | 説明 |
|---|---|
first |
最初の被乗数を指定します。 |
second |
第2の被乗数を指定します。 |
13.22.23 operator/()
このメソッドは、指定された2つのパラメータの商を戻します。
構文
Number operator/( const Number ÷nd, const Number &divisor);
| パラメータ | 説明 |
|---|---|
dividend |
被除数の値を指定します。 |
divisor |
除数の値を指定します。 |
13.22.24 operator%()
このメソッドは、指定されたパラメータを除算した剰余を戻します。
構文
Number operator%( const Number ÷nd, const Number ÷r);
| パラメータ | 説明 |
|---|---|
dividend |
被除数の値を指定します。 |
divizor |
除数の値を指定します。 |
13.22.25 operator+()
このメソッドは、指定されたパラメータの合計を戻します。
構文
Number operator+( const Number &first, const Number &second);
| パラメータ | 説明 |
|---|---|
first |
加算する最初の数値を指定します。 |
second |
加算する第2の数値を指定します。 |
13.22.27 operator-()
このメソッドは、指定されたパラメータの差異を戻します。
構文
Number operator-( const Number &subtrahend, const Number &subtractor);
| パラメータ | 説明 |
|---|---|
subtrahend |
減数の値を指定します。 |
subtractor |
減算する数値を指定します。 |
13.22.28 operator<()
このメソッドは、指定された第1パラメータが第2パラメータ未満かどうかをチェックします。第1パラメータが第2パラメータ未満の場合はTRUEを、それ以外の場合はFALSEを戻します。いずれかのパラメータが無限大の場合はFALSEを戻します。
構文
bool operator<( const Number &first, const Number &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の数値を指定します。 |
second |
比較対象の第2の数値を指定します。 |
13.22.29 operator<=()
このメソッドは、指定された第1パラメータが第2パラメータ以下であるかどうかをチェックします。第1パラメータが第2パラメータ以下の場合はTRUEを、それ以外の場合はFALSEを戻します。いずれかのパラメータが無限大の場合はFALSEを戻します。
構文
bool operator<=( const Number &first, const Number &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の数値を指定します。 |
second |
比較対象の第2の数値を指定します。 |
13.22.30 operator>()
このメソッドは、指定された第1パラメータが第2パラメータを超えているかどうかをチェックします。第1パラメータが第2パラメータを超えている場合はTRUEを、それ以外の場合はFALSEを戻します。いずれかのパラメータが無限大の場合はFALSEを戻します。
構文
bool operator>( const Number &first, const Number &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の数値を指定します。 |
second |
比較対象の第2の数値を指定します。 |
13.22.31 operator>=()
このメソッドは、指定された第1パラメータが第2パラメータ以上であるかどうかをチェックします。第1パラメータが第2パラメータ以上の場合はTRUEを、それ以外の場合はFALSEを戻します。いずれかのパラメータが無限大の場合はFALSEを戻します。
構文
bool operator>=( const Number &first, const Number &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の数値を指定します。 |
second |
比較対象の第2の数値を指定します。 |
13.22.32 operator==()
このメソッドは、指定された2つのパラメータが等しいかどうかをチェックします。2つのパラメータが等しい場合はTRUEを、それ以外の場合はFALSEを戻します。いずれかのパラメータが正の無限大または負の無限大の場合はFALSEを戻します。
構文
bool operator==( const Number &first, const Number &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の数値を指定します。 |
second |
比較対象の第2の数値を指定します。 |
13.22.33 operator!=()
このメソッドは、指定された第1パラメータと第2パラメータが等しくないかどうかをチェックします。2つのパラメータが等しくない場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool operator!=( const Number &first, const Number &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の数値を指定します。 |
second |
比較対象の第2の数値を指定します。 |
13.22.34 operator=()
このメソッドは、指定されたパラメータの値をNumberオブジェクトに割り当てます。
構文
Number& operator=( const Number &num);
| パラメータ | 説明 |
|---|---|
num |
|
13.22.35 operator*=()
このメソッドは、Numberオブジェクトを指定されたパラメータで乗算し、その積をNumberオブジェクトに割り当てます。
構文
Number& operator*=( const Number &num);
| パラメータ | 説明 |
|---|---|
num |
|
13.22.36 operator/=()
このメソッドは、Numberオブジェクトを指定されたパラメータで除算し、その商をNumberオブジェクトに割り当てます。
構文
Number& operator/=( const Number &num);
| パラメータ | 説明 |
|---|---|
num |
|
13.22.37 operator%=()
このメソッドは、Numberオブジェクトを指定されたパラメータで除算し、剰余をNumberオブジェクトに割り当てます。
構文
Number& operator%=( const Number &num);
| パラメータ | 説明 |
|---|---|
num |
|
13.22.38 operator+=()
このメソッドは、Numberオブジェクトと指定されたパラメータを加算し、その和をNumberオブジェクトに割り当てます。
構文
Number& operator+=( const Number &num);
| パラメータ | 説明 |
|---|---|
num |
|
13.22.39 operator-=()
このメソッドは、Numberオブジェクトから指定されたパラメータを減算し、その差をNumberオブジェクトに割り当てます。
構文
Number& operator-=( const Number &num);
| パラメータ | 説明 |
|---|---|
num |
|
13.22.41 operator signed char()
このメソッドは、Numberオブジェクトの値をシステム固有のsigned char型に変換して戻します。
構文
operator signed char() const;
13.22.42 operator double()
このメソッドは、Numberオブジェクトの値をシステム固有のdouble型に変換して戻します。
構文
operator double() const;
13.22.46 operator long double()
このメソッドは、Numberオブジェクトの値をシステム固有のlong double型に変換して戻します。
構文
operator long double() const;
13.22.47 operator short()
このメソッドは、Numberオブジェクトの値をシステム固有のshort int型に変換して戻します。
構文
operator short() const;
13.22.48 operator unsigned char()
このメソッドは、Numberオブジェクトの値をシステム固有のunsigned char型に変換して戻します。
構文
operator unsigned char() const;
13.22.49 operator unsigned int()
このメソッドは、Numberオブジェクトの値をシステム固有のunsigned int型に変換して戻します。
構文
operator unsigned int() const;
13.22.50 operator unsigned long()
このメソッドは、Numberオブジェクトの値をシステム固有のunsigned long型に変換して戻します。
構文
operator unsigned long() const;
13.22.51 operator unsigned short()
このメソッドは、Numberオブジェクトの値をシステム固有のunsigned short型に変換して戻します。
構文
operator unsigned short() const;
13.22.52 power()
このメソッドは、指定されたパラメータの値で累乗したNumberオブジェクトの値を戻します。
構文
const Number power( const Number &val) const;
| パラメータ | 説明 |
|---|---|
val |
この数値で累乗する値を指定します。 |
13.22.53 prec()
このメソッドは、パラメータに指定された桁数の精度に丸めたNumberオブジェクトの値を戻します。
構文
const Number prec( int digits) const;
| パラメータ | 説明 |
|---|---|
digits |
精度の桁数を指定します。 |
13.22.54 round()
このメソッドは、パラメータに指定された小数点以下の桁数に丸めたNumberオブジェクトの値を戻します。
構文
const Number round( int decPlace) const;
| パラメータ | 説明 |
|---|---|
decPlace |
小数点の右側の桁数を指定します。 |
13.22.56 shift()
このメソッドは、指定されたパラメータに従って10の累乗倍したNumberオブジェクトを戻します。
構文
const Number shift( int val) const;
| パラメータ | 説明 |
|---|---|
val |
整数値を指定します。 |
13.22.57 sign()
このメソッドは、Numberオブジェクトの値の符号を戻します。Numberオブジェクトが負の場合は、戻される整数パラメータを使用してDateオブジェクトを作成します。Numberオブジェクトが0 (ゼロ)の場合は、戻される整数パラメータを使用してDateオブジェクトを作成します。Numberオブジェクトが正の場合は、1を戻します。
構文
const int sign() const;
13.22.61 toBytes()
このメソッドは、NumberオブジェクトをBytesオブジェクトに変換します。バイト表現は、長さを除いた書式を前提にしています。つまり、Byte.length()メソッドでは有効なバイト長が指定され、0 (ゼロ)番目のバイトは指数バイトです。
構文
Bytes toBytes() const;
13.22.62 toText()
指定されたパラメータに基づいて、Numberオブジェクトを書式化したstringまたはUStringに変換します。
関連項目:
TO_NUMBERの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
| 構文 | 説明 |
|---|---|
string toText( const Environment *envp, const string &fmt, const string &nlsParam = "") const; |
指定されたパラメータに基づいて、 |
UString toText( const Environment *envp, const UString &fmt, const UString &nlsParam) const; |
指定されたパラメータに基づいて、 |
| パラメータ | 説明 |
|---|---|
envp |
OCCI環境を指定します。 |
fmt |
書式文字列を指定します。 |
nlsParam |
NLSパラメータ文字列を指定します。 |