C语言中的math库概述

简介: C语言中的math库概述

            math.h(在C99及以后的版本中,通常使用#include )是C标准库的一部分,它提供了一系列用于执行数学计算的函数。这些函数可以分为几大类:
角函数:如sin(), cos(), tan(), asin(), acos(), atan(), atan2()等。
双曲函数:如sinh(), cosh(), tanh()等。
指数和对数函数:如exp(), log(), log10(), pow()等。
绝对值、符号和最大值/最小值函数:如fabs(), abs(), fmax(), fmin()等(注意abs()是处理整数的,而fabs()是处理浮点数的)。
平方根函数:如sqrt()。
浮点数分类函数:如fpclassify(), isfinite(), isinf(), isnan(), isnormal(), signbit()等。
其他数学函数:如ceil(), floor(), round(), trunc(), modf(), frexp(), ldexp()等,用于处理浮点数的舍入、分解和组合。
示例代码
下面是一些使用math.h库中函数的简单示例。请注意,由于篇幅限制,这里不会展示所有函数的示例,但会涵盖几类常见的数学函数。
示例1:使用三角函数

#include <stdio.h> 
#include <math.h> 

int main() { 
double angle = M_PI / 4; // 使用M_PI表示π 
double sine = sin(angle); 
double cosine = cos(angle); 
double tangent = tan(angle); 

printf("sin(%f) = %f\n", angle, sine); 
printf("cos(%f) = %f\n", angle, cosine); 
printf("tan(%f) = %f\n", angle, tangent); 

return 0; 
}

示例2:使用指数和对数函数

#include <stdio.h> 
#include <math.h> 

int main() { 
double base = 2.0; 
double exponent = 3.0; 
double result = pow(base, exponent); 

printf("%f raised to the power of %f is %f\n", base, exponent, result); 

double logBaseE = log(result); // 自然对数 
double logBase10 = log10(result); // 以10为底的对数 

printf("The natural logarithm of %f is %f\n", result, logBaseE); 
printf("The logarithm base 10 of %f is %f\n", result, logBase10); 

return 0; 
}

示例3:使用平方根和绝对值函数

#include <stdio.h> 
#include <math.h> 

int main() { 
double number = 9.0; 
double sqrtNumber = sqrt(number); 

printf("The square root of %f is %f\n", number, sqrtNumber); 

int intNumber = -5; 
double absNumber = fabs((double)intNumber); // 注意fabs需要double类型 

printf("The absolute value of %d is %f\n", intNumber, absNumber); 

return 0; 
}

常用的math库函数

1. 三角函数

sin(double x): 计算x(以弧度为单位)的正弦值。
cos(double x): 计算x(以弧度为单位)的余弦值。
tan(double x): 计算x(以弧度为单位)的正切值。
asin(double x): 计算x的反正弦值(结果以弧度表示)。
acos(double x): 计算x的反余弦值(结果以弧度表示)。
atan(double x): 计算x的反正切值(结果以弧度表示)。
atan2(double y, double x): 计算y/x的反正切值,考虑两个参数的符号以确定正确的象限。
示例代码:

#include <stdio.h> 
#include <math.h> 

int main() { 
double radians = M_PI / 4; // M_PI是math.h中定义的π的值 
printf("sin(%lf) = %lf\n", radians, sin(radians)); 
printf("cos(%lf) = %lf\n", radians, cos(radians)); 
printf("tan(%lf) = %lf\n", radians, tan(radians)); 
return 0; 
}

2. 指数和对数函数

exp(double x): 计算e的x次幂(e是自然对数的底数,约等于2.71828)。
log(double x): 计算x的自然对数(以e为底)。
log10(double x): 计算x的以10为底的对数。
pow(double base, double exponent): 计算base的exponent次幂。
示例代码:

#include <stdio.h> 
#include <math.h> 

int main() { 
double result; 
result = exp(1.0); // e^1 
printf("exp(1) = %f\n", result); 
result = log(2.71828); // ln(e) 
printf("log(e) = %f\n", result); 
result = pow(2.0, 3.0); // 2^3 
printf("2^3 = %f\n", result); 
return 0; 
}

3. 浮点数的比较

由于浮点数的表示方式,直接比较两个浮点数是否相等可能会因为精度问题而失败。math库提供了fabs(double x)函数来计算x的绝对值,以及fequale(double x, double y, double epsilon)(注意:这不是标准math库的一部分,但可以用作示例)来检查两个浮点数是否在给定的epsilon范围内相等。
示例代码(使用自定义的fequale函数):

#include <stdio.h> 
#include <math.h> 

int fequale(double x, double y, double epsilon) { 
return fabs(x - y) < epsilon; 
} 

int main() { 
double a = 0.1 + 0.2; 
double b = 0.3; 
if (fequale(a, b, 0.00001
相关文章
ly~
|
10天前
|
数据可视化 BI API
除了 OpenGL,还有哪些常用的图形库可以在 C 语言中使用?
除了OpenGL,C语言中还有多个常用的图形库:SDL,适合初学者,用于2D游戏和多媒体应用;Allegro,高性能,支持2D/3D图形,广泛应用于游戏开发;Cairo,矢量图形库,支持高质量图形输出,适用于数据可视化;SFML,提供简单接口,用于2D/3D游戏及多媒体应用;GTK+,开源窗口工具包,用于创建图形用户界面。这些库各有特色,适用于不同的开发需求。
ly~
22 4
|
11天前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
19天前
|
存储 编译器 C语言
【C语言】自定义类型:联合与枚举的简明概述
【C语言】自定义类型:联合与枚举的简明概述
|
2月前
|
存储 Serverless C语言
C语言中的标准库函数
C语言中的标准库函数
42 0
|
2月前
|
API 开发工具 C语言
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
131 0
|
4月前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
47 1
|
4月前
|
C语言
C语言的标准库:string.h, math.h, stdlib.h
C语言的标准库:string.h, math.h, stdlib.h
|
4月前
|
C语言
【海贼王编程冒险 - C语言海上篇】库函数怎样模拟实现?
【海贼王编程冒险 - C语言海上篇】库函数怎样模拟实现?
32 1
|
4月前
|
存储 C语言
C语言标准库介绍:<time.h>
C语言标准库介绍:<time.h>
|
4月前
|
C语言
C 语言 math.h 库介绍
C 语言 math.h 库介绍