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.

47 lines
851 B
C

1 month ago
#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;
};