在 C 语言中,我们可以使用 <math.h> 标准库提供的 3 种函数来求一个数的平方根,如下表所示。
| 函数 | 说明 |
|---|---|
| sqrt() | 求 “双精度浮点数(double)” 的平方根 |
| sqrtf() | 求 “单精度浮点数(float)” 的平方根(C99 标准新增) |
| sqrtl() | 求 “长双精度浮点数(long double)” 的平方根(C99 标准新增) |
注意: sqrt()、sqrtf()、sqrtl() 这 3 个函数都定义在 <math.h> 头文件中,因此我们在使用之前需要使用 #include <math.h> 引入该头文件。
sqrt() 求 “双精度浮点数(double)” 的平方根
在 C 语言中,我们可以使用 <math.h> 标准库的 sqrt() 函数来求一个 “双精度浮点数(double)” 的平方根。
语法:
sqrt(x)说明:
sqrt() 函数接收单个参数。
x(double):是一个双精度浮点数。
如果 x 是负数,sqrt() 函数将发生域错误,通常返回 NaN (Not a Number)。
示例 1:
#include <stdio.h>
#include <math.h>
int main(void)
{
double a = 4.0;
double b = 25.0;
double c = 2.0;
printf("%f 的平方根是:%f\n", a, sqrt(a));
printf("%f 的平方根是:%f\n", b, sqrt(b));
printf("%f 的平方根是:%f\n", c, sqrt(c));
return 0;
}运行结果如下。
4.000000 的平方根是:2.000000
25.000000 的平方根是:5.000000
2.000000 的平方根是:1.414214sqrtf() 求 “单精度浮点数(float)” 的平方根
在 C99 标准中,我们可以使用 <math.h> 标准库的 sqrtf() 函数来求一个 “单精度浮点数(float)” 的平方根。
语法:
sqrtf(x)说明:
sqrtf() 函数接收单个参数。
x(float):是一个单精度浮点数。
如果 x 是负数,则 sqrtf() 函数会返回 NaN。
示例 2:
#include <stdio.h>
#include <math.h>
int main(void)
{
float a = 9.0f;
float b = 16.0f;
printf("%f 的平方根是:%f\n", a, sqrtf(a));
printf("%f 的平方根是:%f\n", b, sqrtf(b));
return 0;
}运行结果如下。
9.000000 的平方根是:3.000000
16.000000 的平方根是:4.000000sqrtl() 求 “长双精度浮点数(long double)” 的平方根
在 C99 标准中,我们可以使用 <math.h> 标准库的 sqrtl() 函数来求一个 “长双精度浮点数(long double)” 的平方根。
语法:
sqrtl(x)说明:
sqrtl() 函数接收单个参数。
x(long double):是一个长双精度浮点数。
如果 x 是负数,sqrtf() 函数将返回 NaN。
示例 3:
#include <stdio.h>
#include <math.h>
int main(void)
{
long double a = 16.0L;
long double b = 64.0L;
printf("%Lf 的平方根是:%Lf\n", a, sqrtl(a));
printf("%Lf 的平方根是:%Lf\n", b, sqrtl(b));
return 0;
}运行结果如下。
16.000000 的平方根是:4.000000
64.000000 的平方根是:8.000000