有什么简单的方法可以检查两个数字是否有不同的符号?
Any simple way to check if two numbers have different signs?
我有两个浮点数a
和b
。我想检查它们是否有不同的标志。简单的方法是看
bool b = a * b < 0;
但是这两个数很小,a * b可能会下溢。还有其他简单的检查方法吗?
任何认为这是重复问题的人请给我一个完全符合条件 a * b < 0
的答案。请注意,我的问题中 0 的符号未定义。
您可以按如下方式使用 std::signbit:
bool c = std::signbit(a) == std::signbit(b);
另一种方法是使用std::copysign,如下所示:
bool c = std::copysign(a,b) == a;
另一个解决方案是:
bool c = ((0 > a) == (0 > b));
我有两个浮点数a
和b
。我想检查它们是否有不同的标志。简单的方法是看
bool b = a * b < 0;
但是这两个数很小,a * b可能会下溢。还有其他简单的检查方法吗?
任何认为这是重复问题的人请给我一个完全符合条件 a * b < 0
的答案。请注意,我的问题中 0 的符号未定义。
您可以按如下方式使用 std::signbit:
bool c = std::signbit(a) == std::signbit(b);
另一种方法是使用std::copysign,如下所示:
bool c = std::copysign(a,b) == a;
另一个解决方案是:
bool c = ((0 > a) == (0 > b));