Любой простой способ проверить, имеют ли два номера разные знаки?

У меня есть два числа a плавающей запятой a и b. Я хочу проверить, есть ли у них разные знаки. Легкий способ увидеть

bool b = a * b < 0;

Но два числа очень малы, а * b может быть недостаточно. Любой другой простой способ проверить это?

Любой, кто думает, что это дублированный вопрос, дайте мне ответ, который точно соответствует условию a * b < 0. Обратите внимание, что в моем вопросе знак 0 не определен.

Ответы

Ответ 1

Вы можете использовать std :: signbit следующим образом:

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

LIVE DEMO

Другой способ - использовать std :: copysign следующим образом:

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

Ответ 2

Другое решение:

bool c = ((0> a) == (0> b));