cmath标头定义了另外两个内置函数,用于计算数字的平方根(除sqrt外,该参数以double作为参数),该数字具有float和long double类型的参数。
- double sqrt(double arg) :返回数字的平方根以键入double
Syntax : double sqrt(double arg)
// CPP code to illustrate // the use of sqrt function. #include
#include #include using namespace std; int main() { double val1 = 225.0; double val2 = 300.0; cout << fixed << setprecision(12) << sqrt(val1) << endl; cout << fixed << setprecision(12) << sqrt(val2) << endl; return (0); } 输出:15.000000000000 17.320508075689
与该函数相关的错误和异常:
(感谢sunny6041贡献了本节)- 必须同时提供两个参数,否则像这样调用’sqrt()’时将没有错误提供匹配函数。
#include
#include using namespace std; int main() { double answer; answer = sqrt(); cout << "Square root of " << a << " is " << answer << endl; return 0; } 输出:
prog.cpp:9:16: error: no matching function for call to 'sqrt()'
- 如果我们在参数域中传递负值,则会发生错误。输出将是-a的平方根是-nan。
#include
#include using namespace std; int main() { double a = -2 , answer; answer = sqrt(a); cout << "Square root of " << a << " is " << answer << endl; return 0; } 输出:
Square root of -2 is -nan
- 必须同时提供两个参数,否则像这样调用’sqrt()’时将没有错误提供匹配函数。
- float sqrtf(float arg) :返回数字的平方根以键入float
Syntax : float sqrtf(float arg)
// CPP code to illustrate // the use of sqrtf function. #include
#include #include using namespace std; int main() { float val1 = 225.0; float val2 = 300.0; cout << fixed << setprecision(12) << sqrtf(val1) << endl; cout << fixed << setprecision(12) << sqrtf(val2) << endl; return (0); } 输出:15.000000000000 17.320508956909
- long double sqrtl(long double arg) :它返回数字的平方根以更精确地键入long double。使用此函数的优势在于,当使用10 18阶整数时,由于精度错误,使用sqrt函数计算其平方根可能会给出错误的答案,因为编程语言中的默认函数可以使用浮点数/双精度数。但这总是会给出准确的答案。
Syntax : long double sqrtl(long double arg)
下图显示了使用sqrt和sqrtl的长整数时的确切区别。
使用sqrt函数。// CPP code to illustrate // the incorrectness of sqrt function. #include
#include #include using namespace std; int main() { long long int val1 = 1000000000000000000; long long int val2 = 999999999999999999; cout << fixed << setprecision(12) << sqrt(val1) << endl; cout << fixed << setprecision(12) << sqrt(val2) << endl; return (0); } 输出:1000000000.000000000000 1000000000.000000000000
输出:
1000000000.000000000000 1000000000.000000000000
使用sqrtl函数
// CPP code to illustrate // the correctness of sqrtl function. #include
#include #include using namespace std; int main() { long long int val1 = 1000000000000000000; long long int val2 = 999999999999999999; cout << fixed << setprecision(12) << sqrtl(val1) << endl; cout << fixed << setprecision(12) << sqrtl(val2) << endl; return (0); } 输出:1000000000.000000000000 999999999.999999999476
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。