检查两个数字是否有不同符号的简单方法?

时间:2015-12-01 21:57:24

标签: c++ math sign

我有两个浮点数<h1>Hello</h1> a。我想检查一下是否有不同的标志。简单的方法是看

b

但这两个数字非常小,而且* b可能会下溢。还有其他简单的检查方法吗?

任何人认为这是一个重复的问题,请给我一个与条件bool b = a * b < 0; 完全匹配的答案。请注意,在我的问题中,0的符号未定义。

2 个答案:

答案 0 :(得分:7)

您可以按如下方式使用std::signbit

bool c = std::signbit(a) == std::signbit(b);

LIVE DEMO

另一种方法是使用std::copysign,如下所示:

bool c = std::copysign(a,b) == a;

答案 1 :(得分:0)

另一种解决方案是:

bool c =((0&gt; a)==(0&gt; b));