前のページ次のページ上に戻るホーム SophiaFramework 2.2

3.8. 浮動小数点型

BREW では浮動小数点数は double 型を使用してください。 float 型を使うことはできません。 また、浮動小数点数の演算には C++ 言語の演算子を使ってはいけません。 必ず次の関数を使用して操作する必要があります。

関数 意味
double FASSIGN_INT(int32 val) 整数を代入
double FASSIGN_STR(char *pszFloat) 文字列を解析して代入
double FADD(double x, double y) 加算
double FSUB(double x, double y) 減算
double FMUL(double x, double y) 乗算
double FDIV(double x, double y) 除算
boolean FCMP_E(double x, double y) 等しいか判定
boolean FCMP_G(double x, double y) 大きいか判定
boolean FCMP_GE(double x, double y) 以上であるか判定
boolean FCMP_L(double x, double y) 小さいか判定
boolean FCMP_LE(double x, double y) 以下であるか判定

たとえば、(x + y) * z を計算するには、次のように記述する必要があります。

double x, y, z;
z = FMUL(FADD(x, y), z);

これらの関数を使用する煩雑さを避けるために、 SophiaFramework には SFUDouble クラスが用意されています。 SFUDoubledouble 型の値をカプセル化しており、 以下の例に示すように C++ の演算子を使って自然な記述で計算ができます。

SFUDouble num1(255);
SFUDouble num2(123.5);
SFUDouble num3;

num3 = (num1 + num2) / (num1 - num3);

if (num3 < num1) {
      ...
}
      
double value = num3.Value();

また、SFUDouble クラスには、 BREW API では提供されていない三角関数や指数関数・対数関数などを 使用することもできます。

高速な三角関数の計算が必要な場合は、 SFUTrigonometric クラスを使うと便利です。 三角関数の計算は時間がかかる処理ですが、 このクラスは三角関数の値をテーブルとして保持しますので、 テーブル ルックアップによる高速な計算を実現します。