Вы можете использовать библиотеку cmath
#include <cmath>
и использовать ее как
std::cout << std::signbit(num);
Эта функция получает значение с плавающей запятой в качестве ввода и значение bool в качестве вывода.
true for negative
false for positive
например
std :: cout << std :: signbit (1); </p>
даст вам 0 в качестве вывода (false)
но при использовании этой функции вы должны быть осторожны с нулем
std::cout << std::signbit(-0.0); // 512 (true)
std::cout << std::signbit(+0.0); // 0 (false)
Вывод этих строк не совпадает.
Чтобы устранить эту проблему, вы можете использовать:
float x = +0.01;
std::cout << (x >= 0 ? (x == 0 ? 0 : 1) : -1);
, которые дают:
0 for 0
1 for positive
-1 for negative