要检查两个浮点变量是否相等,我们不能使用类似 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(( 来检查(浮点 a == 浮点 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;
}
我不知道你为什么提到 x == y 不起作用。以下代码在比较两个浮点变量C++中完美运行:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
bool result;
float x = 5.1235;
float y = 5.1235;
result = x == y;
cout << result;
return 0;
}