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

Dou*_*zey 5 c++

以下代码生成错误: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);
    }
};
Run Code Online (Sandbox Code Playgroud)

was*_*ful 5

numeric_limits是声明的limits,而不是limits.hC版本climits(顺便说一下,math.h是C版本cmath):

#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);
    }
};
Run Code Online (Sandbox Code Playgroud)