#pragma once #include "Defines.h" #include "iAlgMath_global.h" // 数学基础类 class I_ALGMATH_EXPORT zxMathBase { public: zxMathBase(); virtual ~zxMathBase(); public: /// @brief 求i的阶乘 static int factorial(int i); /// @brief 数据是否有效 static bool isValidValue(float f); template static bool isValidValue(T v) { T tTemp = v; if (tTemp >= 0.0) { return true; } if (qAbs(tTemp - SYS_VALUE_INVALID) > SYS_VALUE_ZERO_PLUS && \ qAbs(tTemp - SYS_VALUE_INVALID1) > SYS_VALUE_ZERO_PLUS && \ qAbs(tTemp - SYS_VALUE_INVALID2) > SYS_VALUE_ZERO_PLUS) { return true; } return false; } /// @brief 判断数据是否有限,非无穷大或无穷小 static bool isLimitedValue(float f); template static bool isLimitedValue(T v) { T tTemp = v; if (tTemp == tTemp && \ tTemp + 10.0 != tTemp) { return true; } return false; } /// 查找幂 static double findDevision(double dValue); };