gpt4 book ai didi

c++ - std::numeric_limits::quiet_NaN() 跨平台安全吗?

转载 作者:太空狗 更新时间:2023-10-29 23:11:59 25 4
gpt4 key购买 nike

在我为 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/

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