Ответ 1
Вы можете использовать std :: signbit следующим образом:
bool c = std::signbit(a) == std::signbit(b);
Другой способ - использовать std :: copysign следующим образом:
bool c = std::copysign(a,b) == a;
У меня есть два числа a
плавающей запятой a
и b
. Я хочу проверить, есть ли у них разные знаки. Легкий способ увидеть
bool b = a * b < 0;
Но два числа очень малы, а * 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));