Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm copysign() trong C++

copysign() (trong <cmath> hoặc <math.h>) tạo giá trị mới có độ lớn (magnitude) của đối số đầu và dấu (sign) của đối số thứ hai.

Cú pháp

double copysign(double x, double y);
float copysignf(float x, float y);
long double copysignl(long double x, long double y);

Ví dụ

  • copysign(4, -5) → -4 (magnitude 4, sign -)
  • copysign(-1.3, 4.4) → 1.3 (magnitude 1.3, sign +)
  • copysign(0.0, -1.0) → -0.0 (dấu âm)

Chương trình mẫu

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    cout << "copysign(-1.1, 2.3) = " << copysign(-1.1, 2.3) << endl;
    cout << "copysign(5.0, -2.0) = " << copysign(5.0, -2.0) << endl;
    cout << "copysign(-0.0, -1.0) = " << copysign(-0.0, -1.0) << endl;
    return 0;
}

Kết quả

copysign(-1.1, 2.3) = 1.1
copysign(5.0, -2.0) = -5
copysign(-0.0, -1.0) = -0

Ứng dụng: Giữ dấu khi tính toán, xử lý -0.0, implement hàm signum, xử lý NaN (copysign bảo toàn payload NaN).

Lưu ý: Khác với abs() (luôn dương), copysign cho phép kết quả âm.