Computer >> Máy Tính >  >> Lập trình >> C ++

sqrt, sqrtl và sqrtf trong C ++

Trong thư viện cmath của C ++, có các hàm khác nhau để lấy căn bậc hai ngoại trừ từ sqrt. Về cơ bản, sqrt được sử dụng cho đầu vào kiểu kép. Các hàm khác được sử dụng cho dữ liệu kiểu float, long, v.v. Hãy để chúng tôi xem cách sử dụng các hàm này.

Hàm sqrt ()

Hàm này được sử dụng cho dữ liệu kiểu kép. Vì vậy, điều này trả về căn bậc hai của kiểu double. Cú pháp như dưới đây.

double sqrt(double argument)

Ví dụ

#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
main() {
   double x = 144.0;
   double y = 180.0;
   cout << fixed << setprecision(12) << sqrt(x) << endl;
   cout << fixed << setprecision(12) << sqrt(y) << endl;
}

Đầu ra

12.000000000000
13.416407864999

Xin lưu ý rằng chúng ta phải đặt đối số, nếu không nó sẽ trả về lỗi. Và nếu đối số là phủ định, thì nó cũng sẽ trả về NaN.

Hàm sqrtf ()

Hàm này được sử dụng cho dữ liệu kiểu nổi. Vì vậy, điều này trả về căn bậc hai của kiểu float. Cú pháp như dưới đây.

float sqrtf(float argument)

Ví dụ

#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
main() {
   float x = 144.0;
   float y = 180.0;
   cout << fixed << setprecision(6) << sqrtf(x) << endl;
   cout << fixed << setprecision(6) << sqrtf(y) << endl;
}

Đầu ra

12.000000
13.416408

Xin lưu ý rằng chúng ta phải đặt đối số, nếu không nó sẽ trả về lỗi. Và nếu đối số là phủ định, thì nó cũng sẽ trả về NaN.

Hàm sqrtl ()

Hàm này được sử dụng cho dữ liệu kiểu kép dài. Vì vậy, điều này trả về căn bậc hai của kiểu dài double. Điều này là gấp đôi với độ chính xác cao hơn. Khi chúng ta đang sử dụng các số nguyên có thứ tự 1018 thì hàm này rất hữu ích.

long double sqrtl(long double argument)

Ví dụ

#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
main() {
   long long int x = 5000000000000000000;
   long long int y = 999999999999999999;
   cout << fixed << setprecision(12) << sqrtl(x) << endl;
   cout << fixed << setprecision(12) << sqrtl(y) << endl;
}

Đầu ra

2236067977.499789696420
999999999.999999999476