更新时间:2025-07-01 00:00点击:73
Python 的标准库中的“math”模块提供了许多常用的数学函数,例如三角函数、四舍五入、指数、对数、平方根、总和等,都可以通过 math 模块来进行运算。
下方列出几种 math 模块常用的方法:
要使用 math 必须先 import math 包,或使用 from 的方式,单独 import 特定的模块。
import mathfrom math import sinmath.pi 使用后会返回圆周率的数学常数,math.e 使用后会返回 指数 的数学常数(常数表示固定不变的数字)。
import mathprint(math.pi) # 3.141592653589793print(math.e) # 2.718281828459045math.ceil(x) 使用后会将小数点后方的数字,无条件进位到整数,以下方的程序为例,圆周率 3.14159 无条件进位后就等于 4(单纯四舍五入可使用内置函数 round)。
import mathpi = math.piprint(math.ceil(pi)) # 4math.floor(x) 使用后会将小数点后方的数字,无条件舍去到整数,以下方的程序为例,圆周率 3.14159 无条件舍去后就等于 3(单纯四舍五入可使用内置函数 round)。
import mathpi = math.piprint(math.floor(pi)) # 3math.copysign(x, y) 使用后,会 根据 y 的正负符号,改变“x 绝对值”之后正负值。
import mathprint(math.copysign(10, -5)) # -10print(math.copysign(-10, 9)) # 10print(math.copysign(-10, -3)) # -10math.fabs(x) 使用后会 返回 x 的绝对值,计算结果以浮点数 float 格式显示。
import mathprint(math.fabs(-10)) # 10.0math.fmod(x, y) 使用后会返回 x 除以 y 的余数,计算结果以浮点数 float 格式显示,如果要返回整数,可使用 Python 数学计算 x % y 的语法。
import mathprint(math.fmod(7,3)) # 1.0math.fsum(iter) 使用后会 返回串列或 tuple 里的数值加总,计算结果以浮点数 float 格式显示。
import mathprint(math.fsum([1,2,3,4,5])) # 15.0print(math.fsum((1,2,3,4,5))) # 15.0math.gcd(x, y) 使用后会返回 x 和 y 的最大公约数(同时可以整除 x 和 y 的最大整数)。
import mathprint(math.gcd(18,12)) # 6math.pow(x, y) 会返回 x 的 y 次方,计算结果以浮点数 float 格式显示(如果需要整数,可参考内置函数 pow(x, y, z))。
import mathprint(math.pow(2, 5)) # 32.0math.sqrt(x) 会返回 x 的平方根,计算结果以浮点数 float 格式显示。
import mathprint(math.sqrt(16)) # 4.0math.factorial(x) 会 返回 x 的阶乘(x!),x 只能使用正整数。
import mathprint(math.factorial(5)) # 120 ( 5x4x3x2x1=120 )math.degrees(x) 将 x 弧度转换为角度,math.radians(x) 将 x 角度转换为弧度。
import mathprint(math.radians(30)) # 0.5235987755982988print(math.degrees(0.5236)) # 30.0000701530499math.sin(x) 返回 x 弧度的正弦值,math.cos(x) 返回 x 弧度的余弦值,math.tan(x) 返回 x 弧度的正切值(1 弧度等于 180 度/π)。
import mathr = math.radians(30) # 将 30 度转换为弧度print(math.sin(r)) # 0.49999999999999994print(math.cos(r)) # 0.8660254037844387print(math.tan(r)) # 0.5773502691896257math.asin(x) 返回 x 弧度的反正弦值,math.acos(x) 返回 x 弧度的反余弦值,math.atan(x) 返回 x 弧度的反正切值(1 弧度等于 180 度/π)。
import mathr = math.radians(30) # 将 30 度转换为弧度print(math.asin(r)) # 0.5510695830994463print(math.acos(r)) # 1.0197267436954502print(math.atan(r)) # 0.48234790710102493math.exp(x) 会返回 e 常数的 x 次方。
import mathprint(math.exp(2)) # 7.38905609893065math.log 相关的模块,可以返回对应的自然对数。
import mathprint(math.log(10)) # 2.302585092994046print(math.log(10,3)) # 2.095903274289385print(math.log1p(10)) # 2.3978952727983707print(math.log2(10)) # 3.321928094887362print(math.log10(10)) # 1.0math.isclose 可以根据判断 x 和 y 是否够接近,“够接近”的定义在于 x 和 y 的差异是否大于某个数值,如果够接近就返回 True,否则返回 False。
下面的例子,在没有设置 rel_tol 和 abs_tol 参数的状况下,除非 x 和 y 相等,否则都是“不够接近”。
import mathprint(math.isclose(3.14, 3.14)) # Trueprint(math.isclose(3.14000, 3.14001)) # Falserel_tol 参数定义“相对的接近范围”,公式为“x 和 y 的最大值乘以 rel_tol”,下方的例子,10 和 5 的接近范围最大是 10x0.5=5,因此如果 10-4 比 5 大,就会返回 False(不接近),同理,10 和 20 的接近范围最大会是 20x0.5=10,如果 20-9 比 10 大,就会返回 False。
import mathprint(math.isclose(10, 5, rel_tol=0.5)) # Trueprint(math.isclose(10, 4, rel_tol=0.5)) # Falseprint(math.isclose(20, 10, rel_tol=0.5)) # Trueprint(math.isclose(20, 9, rel_tol=0.5)) # Falseabs_tol 参数定义“绝对的接近范围”,公式为“x-y 的绝对值”,下方的例子,10.4-10=0.4,0.4 小于 abs_tol 定义的 0.5,表示接近,返回 True。
import mathprint(math.isclose(10, 10.4, abs_tol=0.5)) # True 0.4<0.5print(math.isclose(10, 10.6, abs_tol=0.5)) # False 0.6>0.5math.isfinite(x) 和 math.isinf(x) 能判断 x 是否为无限大的数字,返回 True 或 False。
import matha = float('inf')print(math.isfinite(a)) # False a 是无限大,返回 Falseprint(math.isinf(a)) # True a 是无限大,返回 truemath.isnan(x) 能判断 x 是否为 NaN(非数字),返回 True 或 False。
import matha = float('nan')print(math.isnan(a)) # Trueprint(math.isnan(123)) # False在Python中,math模块提供了许多数学相关的函数和常量。如果你想使用math模块进行数学计算,首先需要导入这个模块。这里是如何导入math模块并使用它的一些基本示例:
math模块你可以通过以下方式导入math模块:
import math
math模块的函数导入math模块后,你可以使用它提供的各种数学函数。以下是一些常用的例子:
import math number = 16sqrt_number = math.sqrt(number)print(sqrt_number) # 输出: 4.0
import math base = 2 exp = 3 power = math.pow(base, exp) # 或者使用 base ** exp print(power) # 输出: 8.0
import math number = -10abs_number = math.fabs(number) # 或者使用 abs(number)print(abs_number) # 输出: 10.0
import math angle_rad = math.pi / 4 # π/4 弧度,即45度角sin_value = math.sin(angle_rad)cos_value = math.cos(angle_rad)print(sin_value) # 输出: 0.7071067811865475 (或接近于此的值)print(cos_value) # 输出: 0.7071067811865476 (或接近于此的值)
math模块的常量math模块还提供了一些数学常量,例如π(pi)和e:
import math print(math.pi) # 输出: π的值,大约为3.141592653589793print(math.e) # 输出: e的值,大约为2.718281828459045
对于一些简单的数学操作,如绝对值、幂运算等,你也可以直接使用Python内置的函数(如abs()和**运算符),而不需要导入math模块。但是,当需要用到math模块提供的更复杂的数学函数或常量时,就需要导入它。
当使用三角函数时,角度通常需要转换为弧度。可以使用math.radians()函数将角度转换为弧度。例如:angle_rad = math.radians(45)。相反,如果你已经有了弧度值并想转换为角度,可以使用math.degrees()函数。例如:angle_deg = math.degrees(angle_rad)。
math.pow()函数用于计算x的y次幂,你也可以使用Python的内置运算符**来实现相同的功能。例如:power = base ** exp。同样地,对于平方根,你可以使用** 0.5或者内置的math.sqrt()函数。例如:sqrt_number = number ** 0.5 或 sqrt_number = math.sqrt(number)。