要检查两个浮点变量是否相等,我们不能使用 a==b 之类的东西。但是如何使用头文件中的 islessgreater() 函数呢?
从 C++11 开始,有以下三个重载
bool islessgreater (float x , float y);
bool islessgreater (double x , double y);
bool islessgreater (long double x, long double y);
编辑#1 我知道有一些解决方法可以检查很多人的两个浮点变量的相等性。例如, Boost 中的浮点比较 如何正确、标准地比较浮点数?
我关心的是我们是否可以使用 C++11 中的标准函数 islessgreater() 来检查 (float a == float b) 与否?例如
int main() {
float a = 1E-10;
float b = 1.001E-10;
bool res = !isnan(a) && !isnan(b) && !islessgreater(a, b);
std::cout << std::boolalpha;
if (res) std::cout << "a == b" << endl;
else std::cout << "a != b" << endl;
return 0;
}