【发布时间】:2016-02-07 17:32:03
【问题描述】:
我需要在 C++ 中创建一个具有 NaN 值的浮点变量。我还需要能够看到哪个 NaN 的值更大。要比较 NaN,您需要查看浮点数的尾数部分。 使用标准创建 NaN
nanf("abc");
方法导致 NaN 具有相同的尾数,即使 nanf 函数中使用了不同的字符串。通过从位模式的基本部分创建 NaN 应该证明可以提供不同的尾数,因此可以对尾数的大小执行简单的排序。
【问题讨论】:
-
欢迎来到 stackoverflow.com。请花点时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。也请read about how to ask good questions。您可能还想了解如何创建Minimal, Complete, and Verifiable Example。
-
你试过十进制字符串而不是“acb”吗?或者您可以自己构建所需的位模式。由于大多数实现都这样做,因此将您编写的代码限制为使用 IEEE 浮点数的实现可能是可以接受的。只需将所需的模式放入
uint32_t和memcpy并将其放入float变量中。 -
nanf是实现定义的——所以答案取决于你的实现。你用的是哪个编译器? -
我正在使用 Visual Studio 进行编译。我通常使用 g++,但我遇到了很多错误,因此在 VS 中调试起来更容易。我会在 g++ 中尝试一下,看看它会返回什么。它可能会解决我的问题。
-
看起来你对 MSVC 不走运:“输入值被忽略”msdn.microsoft.com/en-us/library/dn465173.aspx
标签: c++ sorting nan bitset mantissa