- 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/
在我为 armhf 板创建的 c++ 应用程序中,我获取 gps 经度和纬度十进制值并将其存储到 double 变量。目前,我将这些变量初始化为无效值 (255)。 但是我通过使用 std::nume
在我的数据采集项目中存储双数据时,我使用 std::numeric_limits::quiet_NaN() 识别所有“丢失”的数据。但是,我想存储一些额外的信息以了解为什么数据“丢失”(数据传输丢失、
我一直认为有两种 NaN:安静的和信号的。 但后来我意识到 NAN宏的计算结果两者都不是。 在 Visual C++ 中,std::numeric_limits::quiet_NaN()显示为 1.#
我想知道以下类型的 nan 之间有什么区别。除了 NAN_macro (计算结果为 -nan(ind) 而不是 nan )的视觉差异外,它们的行为似乎都相同(根据下面的示例脚本)。 我看了一些其他的答
我对表示安静 NaN 值的 C++ 工具的数量感到惊讶。我发现了三种标准方法: std::numeric_limits::quiet_NaN() - 通用,我认为这是选定的 std::nan , st
在某些情况下,将普通 float 与 std::numeric_limits::quiet_NaN() 进行比较总是产生 "true"使用 GCC + "-ffast-math" 编译时(在 Linu
我是一名优秀的程序员,十分优秀!