我正试图找到一种方法来检查浮点数是否为负而不分支。
float a = -0.5;
int getSignOfa= *(int*)&a >> 31; //type-pun to int and get signed bit;
这是检查浮点数签名位的安全方法吗?
答案 0 :(得分:4)
从C99开始,您可以使用signbit(x)
中定义的math.h
来获取浮点数的符号位。如果x
为正(未设置符号位),则返回0;如果为负(已设置符号位),则返回非零。
答案 1 :(得分:0)
您可以使用copysign()
中可用的math.h
函数来获取float
数字的符号。
float sign = copysign(1, float_num);
根据输入的类型,sign
的值将是+1
或-1
。