![]() ![]() ![]()
|
SophiaFramework 2.2 |
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 クラスが用意されています。 SFUDouble は double 型の値をカプセル化しており、 以下の例に示すように 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 クラスを使うと便利です。 三角関数の計算は時間がかかる処理ですが、 このクラスは三角関数の値をテーブルとして保持しますので、 テーブル ルックアップによる高速な計算を実現します。
| Copyright(C) 2003-2004 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|