- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我为 armhf 板创建的 c++ 应用程序中,我获取 gps 经度和纬度十进制值并将其存储到 double 变量。目前,我将这些变量初始化为无效值 (255)。
但是我通过使用 std::numeric_limits
遇到了这个问题可以将 double 变量分配给 std::numeric_limits<double>::quiet_NaN()
.
关于 nan 跨平台问题,我阅读了非常有用的链接 Should I use floating point's NaN, or floating point + bool for a data set that contains invalid values?
另一方面std::numeric_limits
是纯 c++11 标准,但我想知道是否有人在将这种代码移植到不同平台时遇到过任何问题。
例如,如果我将我的代码从硬 float 移动到软 float 甚至是 amd64 平台,上面的初始化会导致任何应该用操作系统预处理器指令处理的问题吗?
最佳答案
来自 cppreference: “std::numeric_limits::has_quiet_NaN 的值对于能够表示特殊值“Quiet Not-A-Number”的所有类型 T 都为真。该常量对所有浮点类型都有意义,并且如果 std::numeric_limits::is_iec559 == true。”
您需要检查软浮点库或 FPU 是否符合 IEEE 754 (IEC 559),并且您还需要使用正确的编译器标志来启用它们,请参阅:gcc-flags用于 float 。
关于c++ - std::numeric_limits<double>::quiet_NaN() 跨平台安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48716310/
我正在阅读 Setting an int to Infinity in C++ .我知道当一个人需要真正的无限时,应该使用 numeric_limits::infinity() ;我猜它背后的基本原理
我有一个错误 limits:30:29: error: 'numeric_limits' is not a template 在文件中,它为特定类重载了 std::numeric_limits:
如果你错误地做了类似的事情: #include int arr[3]; auto x = std::numeric_limits::max(); 您将从 STL 实现中的文件中获得无用的错误消息。
为什么这不起作用? enum : long {MaxValue = std::numeric_limits::max()}; 我收到错误:错误 1 错误 C2057:预期的常量表达式 它有什么不固
我在调试一些涉及确定加法运算是否会下溢 double 的代码时遇到了一些奇怪的行为,至少在我看来是这样。这是一个示例程序,展示了我的发现。 #include #include using std:
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Why is std::numeric_limits::max() a function? 为什么 nume
我有一个带有两个参数的函数,一个其元素正在被测试的 vector ,以及一个我们输入为真或假的 bool 变量。如果我们输入 true 那么它应该隔离所有数字总和为偶数的元素并将其放置到一个新 vec
numeric_limits::min(); numeric_limits::lowest(); 这两个函数返回的值有什么不同? 最佳答案 C++11 标准第 18.3.2.4 段规定: static
我有一个包含范围参数的模板统计类。 template class limitStats { public: limitStats(T mx, T min) : max(mx),
我在为 enum 中的元素分配最大值时遇到问题。第一: protected: enum {DEFAULT_PADDING=std::numeric_limits::max()}; 结果: ./
基本上,我想这样做: // error: function call is not allowed in a constant expression: static_assert( std::nu
我正在使用想要使用 STL 的数据结构 limits确定我给它的结构的最小值、最大值和无穷大(我认为只有这些)值。我正在使用 Visual C++ 2010,如果有这方面的具体实现细节的话。 这是我的
有什么方法可以使用 std::numeric_limits::is_integer和 std::numeric_limits::is_specialized改变模板行为? 例如我可以这样做吗: tem
C++11 标准是否指定 numeric_limits::min和 max必须是可在模板中使用的常量表达式或 static_assert ? 更一般地说,如何根据标准找到常量表达式的函数列表? 最佳答
我有一个名为 Atomic 的类,它基本上是一个 _Atomic_word加上调用 gcc 原子内置函数的方法。 class Atomic{ mutable volatile _Atomic_
我创建了自己的类型,没有任何比较器,也没有专门化 std::numeric_limits .尽管如此,出于某种原因,std::numeric_limits编译得很好。为什么 c++ 标准委员会定义 n
我想在一个类中定义一个常量,它的值是最大可能的 int。像这样的: class A { ... static const int ERROR_VALUE = std::numeric_
我正在尝试从源代码编译应用程序,FlyWithLua ,其中包括 sol2 库。 我正在按照说明进行操作,但是当我运行 cmake --build ./build 时,出现以下错误: In file
当我编译这段 C++ 代码时,我没想到会看到这样的输出 #include #include #include int main() { const long double ldMinFl
我正在尝试编写一个分别处理数字和非数字数据的流类。有人可以向我解释为什么这段代码无法编译吗? #include #include #include #include class Stream
我是一名优秀的程序员,十分优秀!