Ant*_*nio 3 c++ floating-point
在过去,我们一直在使用Visual Studio的_fpclass来了解无限是积极还是消极:http: //msdn.microsoft.com/en-us/library/aa246882%28v=vs.60%29.aspx
传递到std :: fpclassify,正负无限之间没有区别:http://en.cppreference.com/w/cpp/numeric/math/fpclassify
我可以使用其中一种方法安全地检查无限的符号吗?
C/C++中是否有标准符号函数(signum,sgn)?
注意:
笔记2:
对于仅检查无限值的符号(如线程标题中所述),此代码应该足够:
template<typename T>
typename std::enable_if<std::numeric_limits<T>::has_infinity, bool>::type Signed(T const& Value)
{
return Value == -std::numeric_limits<T>::infinity();
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果您可以访问C++ 11就绪编译器,那么标准库还提供了一个函数,std::signbit在头文件中调用<cmath>.它适用于每种基本浮点类型和各种值(也适用于无限甚至NaN),因此应该是更通用的解决方案.