ホーム > デベロッパ > BREW FAQ

BREW FAQ : double 型の変数を int 型にキャストするには?

double 型の変数を int 型にキャストするには?

BREW 2.1 には、double 型の値を int 型の値に変換する関数はありません。

以下の手順に従って double 型の値を int 型の値に変換します。 これは、Qualcomm 社が推奨している方法です。

  1. FLOATTOWSTR を使用して double 型の数値をワイド文字列に変換します。
  2. WSTRTOSTR を使用してワイド文字列を char 文字列に変換します。
  3. ATOI を使用して char 文字列を int 型の数値に変換します。

※ BREW 2.1 では FLOATTOWSTR に不具合があり、整数部が 20 桁を超えるとメモリを破壊する恐れがあります。

SophiaFramework では Float32, Float64 型を使うことで通常の float, double と同じように浮動小数点を扱うことができます。

【 コード例 】

[ BREW API のみを使用したコード ]

// 浮動小数点型の値を整数型の値に変換します。
#define SIZE  64

double   doubleVal       = -1.234;
int      intVal          =  0;
char     charStr[SIZE]   = {0};
AECHAR   aecharStr[SIZE] = {0};

// double 型の数値をワイド文字列に変換します。
boolean b = FLOATTOWSTR(doubleVal, aecharStr, SIZE);
// ワイド文字列を char 文字列に変換します。
WSTRTOSTR(aecharStr, charStr, SIZE);
// char 文字列を int 型の数値に変換します。
intVal = ATOI(charStr);

[SophiaFramework を使用したコード]

// 浮動小数点型の値を整数型の値に変換します。
Float64 doubleVal(-1.234);
SInt32 intVal = (SInt32)doubleVal;