将数字平方但保留符号(在c中)

时间:2015-01-04 01:55:25

标签: c math

是否有一种简单的方法可以在对值进行平方后保留符号。 我目前有:

float signed_square(float x) {
    if (x > 0) {
        return x * x;
    } else {
        return -(x * x);
    }
}

2 个答案:

答案 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);
}