You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
#include <limits>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* double <EFBFBD>Ա<EFBFBD><EFBFBD>࣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD> util.h <EFBFBD><EFBFBD> double <EFBFBD>ԱȺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD>ȶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> double <EFBFBD>ڲ<EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Լ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
|
|
|
|
|
|
*/
|
|
|
|
|
|
class DoubleComparator
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
explicit DoubleComparator()
|
|
|
|
|
|
: m_epsilon(std::numeric_limits<double>::epsilon())
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
explicit DoubleComparator(double epsilon)
|
|
|
|
|
|
: m_epsilon(epsilon)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool IsEqual(double a, double b) const
|
|
|
|
|
|
{
|
|
|
|
|
|
return std::abs(a - b) < m_epsilon;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool IsLessThan(double a, double b) const
|
|
|
|
|
|
{
|
|
|
|
|
|
return !IsEqual(a, b) && a < b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool IsLessThanOrEqual(double a, double b) const
|
|
|
|
|
|
{
|
|
|
|
|
|
return a < b || IsEqual(a, b);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool IsGreaterThan(double a, double b) const
|
|
|
|
|
|
{
|
|
|
|
|
|
return !IsEqual(a, b) && a > b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool IsGreaterThanOrEqual(double a, double b) const
|
|
|
|
|
|
{
|
|
|
|
|
|
return a > b || IsEqual(a, b);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
double m_epsilon;
|
|
|
|
|
|
};
|