私たちが持っている C++ モジュールの 1 つに、式評価言語があります。
\
EVDataElement NAME::eval( const EvalContext &ec, \
const bool recursiveFlag, \
EVEvaluatorTraceFormatter * trace ) \
{ \
/* EVTimer timer("(DECLARE_REL_EVAL)","eval","*", "", 1,1, 3); */ \
EVDataElement val ( \
(left->eval(ec, recursiveFlag, trace)) \
OP (right->eval(ec, recursiveFlag, trace)) ); \
return val; \
}
DECLARE_REL_EVAL(oLT,<)
DECLARE_REL_EVAL(oLE,<=)
DECLARE_REL_EVAL(oGT,>)
DECLARE_REL_EVAL(oGE,>=)
DECLARE_REL_EVAL(oEQ,==)
DECLARE_REL_EVAL(oNE,!=)
このモジュールでは、特定の構成ルールを設定できます。
SO、データベースに field1 - field2 > param1 というルールがあった場合、上記の式言語に渡してこの条件を検証し、結果を返します。
現在直面している問題は、param1 = 3、field1 = 6.15、field2 = 3.15 です。
結果は正しいと言っています。そして、6.15 と 3.15 の差が 3.00 になるからだと思います。
そして、3.00 と 3 を比較すると、3.00 の方が大きいと思います。これを回避する方法はありますか?
キャストを使用できないと言った理由は、左右のデータ型がどのようなものになるか分からないからです。この質問が理にかなっているといいのですが。