是否有一种简单的方法可以在对值进行平方后保留符号。 我目前有:
float signed_square(float x) {
if (x > 0) {
return x * x;
} else {
return -(x * x);
}
}
答案 0 :(得分:11)
正如我在评论中所说:
float signed_square(float x){
return x * fabs(x);
}
答案 1 :(得分:3)
C99提供double copysign(double x, double y)
copysign
函数会生成一个大小为x
且符号为y
的值。
float signed_square(float x) {
return copysignf(x*x, x);
}