Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

sqrt, sqrtl และ sqrtf ใน C++


ในไลบรารี cmath ของ C++ มีฟังก์ชันต่างๆ ในการรับสแควร์รูท ยกเว้นจาก sqrt sqrt ถูกใช้โดยทั่วไปสำหรับอินพุตแบบคู่ ส่วนอื่นๆ ใช้สำหรับ float ข้อมูลแบบยาว ฯลฯ ให้เราดูการใช้งานของฟังก์ชั่นเหล่านี้

ฟังก์ชัน sqrt()

ฟังก์ชันนี้ใช้สำหรับข้อมูลประเภทคู่ นี่จึงคืนค่ารากที่สองของประเภทสองเท่า ไวยากรณ์เป็นเหมือนด้านล่าง

double sqrt(double argument)

ตัวอย่าง

#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;
}

ผลลัพธ์

12.000000000000
13.416407864999

โปรดทราบว่าเราต้องใส่อาร์กิวเมนต์ มิฉะนั้น จะส่งคืนข้อผิดพลาด และถ้าอาร์กิวเมนต์เป็นลบ ก็จะส่งคืน NaN

ฟังก์ชัน sqrtf()

ฟังก์ชันนี้ใช้สำหรับข้อมูลประเภทลอยตัว ดังนั้นนี่จะคืนค่าสแควร์รูทของประเภท float ไวยากรณ์เป็นเหมือนด้านล่าง

float sqrtf(float argument)

ตัวอย่าง

#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;
}

ผลลัพธ์

12.000000
13.416408

โปรดทราบว่าเราต้องใส่อาร์กิวเมนต์ มิฉะนั้น จะส่งคืนข้อผิดพลาด และถ้าอาร์กิวเมนต์เป็นลบ ก็จะส่งคืน NaN

ฟังก์ชัน sqrtl()

ฟังก์ชันนี้ใช้สำหรับข้อมูลประเภทคู่แบบยาว นี่จึงคืนค่าสแควร์รูทของประเภท long double นี่คือสองเท่าที่มีความแม่นยำมากขึ้น เมื่อเราใช้จำนวนเต็มของคำสั่ง 1018 ฟังก์ชันนี้จะเป็นประโยชน์

long double sqrtl(long double argument)

ตัวอย่าง

#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;
}

ผลลัพธ์

2236067977.499789696420
999999999.999999999476