0

要检查两个浮点变量是否相等,我们不能使用 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;
}
4

1 回答 1

-1

我不知道你为什么提到 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;
}
于 2019-08-30T08:54:02.833 回答