std::numeric_limits<double>::epsilon() 在 Visual C++ 2015 中未定义

std::numeric_limits<double>::epsilon() undefined in Visual C++ 2015

本文关键字:Visual 未定义 C++ 2015 gt numeric limits lt std double epsilon      更新时间:2023-10-16

以下代码产生错误:std::numeric_limits<double>::epsilon()未定义错误。

使用numeric_limits<double>::epsilon也会产生此错误。

#ifndef _USE_MATH_DEFINES
#define _USE_MATH_DEFINES
#endif // !_USE_MATH_DEFINES
#include <math.h>
#include <limits.h>
class plusCartesianPoly {
public:
    static bool isClose(double a, double b)
    {
        if (fabs(a-b) <= std::numeric_limits::epsilon())
            return true;
        return(false);
    }
};

numeric_limitslimits中声明,而不是limits.h,后者是climits的C版本(顺便说一下,math.hcmath的C版本(:

#ifndef _USE_MATH_DEFINES
#define _USE_MATH_DEFINES
#endif // !_USE_MATH_DEFINES
#include <cmath>
#include <limits>
class plusCartesianPoly {
public:
    static bool isClose(double a, double b)
    {
        if (std::fabs(a-b) <= std::numeric_limits<double>::epsilon())
            return true;
        return(false);
    }
};

<limits.h>包含来自C标准库的宏类型限制

您需要<limits>才能使用C++标准库函数。