gpt4 book ai didi

c++ - 你能安全地检查无穷大的符号吗?

转载 作者:太空狗 更新时间:2023-10-29 20:03:46 25 4
gpt4 key购买 nike

过去我们一直在使用 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

我可以使用此处的其中一种方法安全地检查无穷大的符号吗?
Is there a standard sign function (signum, sgn) in C/C++?

注意:

  • 独立地如果fastmath已启用
  • 以便携的方式

注2:

  • C++11 适用

最佳答案

仅检查无限值的符号(如线程标题中所述),此代码就足够了:

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();
}

编辑:如果您可以访问 C++11 就绪编译器,标准库还提供一个函数,称为 std::signbit在标题中 <cmath> .它适用于每种基本浮点类型和每种值(因此也适用于无限甚至 NaN),因此应该是一个更通用的解决方案。

关于c++ - 你能安全地检查无穷大的符号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25909494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com