NaN 值的符号检查
我的程序在计算过程中可以生成 nan
或 -nan
值。 我使用 isnan
方法检查值是否为 nan
/-nan
。
我还必须区分 nan 值是正数还是负数(nan
或 -nan
)。我该怎么做?
添加:我需要 WIN 和 Unix/Linux 的跨平台解决方案
My program during calculation can generate nan
or -nan
values.
I check if the values are nan
/-nan
using isnan
method.
I also have to distinguish if the nan value is positive or negative (nan
or -nan
). How can I do this?
Added:I need crossplatform solution for WIN and for Unix/Linux
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
中的signbit
:它显然是 C99 和 POSIX.1-2001 的一部分,但如果您不想使用/符合,您可以自己编写一个宏/函数两者之一。
Try
signbit
from<math.h>
:It's apparently part of C99 and POSIX.1-2001, but you could write a macro/function yourself if you don't want to use/conform to either of the two.
如今几乎所有系统都使用 IEEE 单精度或双精度浮点。因此,在这种情况下,您可以(按位)将其转换为整数并读取符号位。
这是一种使用联合的方法。尽管它不完全符合标准,但它仍然适用于几乎所有系统。
Nearly all systems today use either IEEE single or double precision floating-point. So in that case you could (bitwise) convert it to an integer and read the sign-bit.
Here's one approach that uses unions. Although it's not fully standard-compliant, it should still work on nearly all systems.
您可以使用
copysign
函数(C99,在
中);来自 C99 §7.12.11.1:
You could use the
copysign
function (C99, in<math.h>
);From C99 §7.12.11.1: