c++ - Float 或 Double 特殊值

标签 c++ floating-point double

我有 double (或浮点)变量,它们可能是“空的”,因为没有有效值。我如何使用内置类型 float 和 double 表示这种情况?

一个选项是包含一个 float 和一个 bool 值的包装器,但这行不通,因为我的库有存储 double 值的容器,而不是表现为 double 值的对象。另一个是使用 NaN (std::numeric_limits)。但我看不出有什么办法可以检查变量是否为 NaN。

如何解决需要“特殊”浮点值来表示数字以外的其他含义的问题?

最佳答案

我们已经通过使用 NaN 做到了这一点:

double d = std::numeric_limits<double>::signaling_NaN();
bool isNaN = (d != d);

与自身比较是否相等的 NaN 值将产生 false。这就是您测试 NaN 的方式,但似乎只有在 std::numeric_limits<double>::is_iec559 时才有效是真的(如果是这样,它也符合 ieee754)。

在C99 中有一个名为isnan 的宏。为此在 math.h ,它也会检查 float 的 NaN 值。

关于c++ - Float 或 Double 特殊值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/332705/

相关文章:

c++ - 在 Windows 中编译 Clang 插件

java - java中的快速实值随机生成器

Java 变量显示值为 'NaN' 但 var == Double.NaN 为 false,为什么?

iphone - 双数据类型+iphone

c++ - 有没有办法从 Excel 的公式栏中获取文本和光标位置?

c++ - 如何将两个有符号位变量合并为一个有符号位变量?

floating-point - 如何访问浮点常量?

floating-point - HP 2114/15/16 浮点转换

java - 创建一个运行时数组,该数组接受用户输入并在运行时创建数组并接受 3 个变量来计算总和和平均值

c++ - QWidget 简单,只有标题和图标