此模块提供对 C 标准定义的数学函数的访问。
这些函数不适用于复数; 如果您需要计算复数,请使用 cmath 模块中的同名函数。 分离支持计算复数的函数的目的来自于大多数开发人员不想像数学家那样学习复数的概念。 获取异常而不是复数结果允许开发人员更早地检测传递给这些函数的参数中的复数并调查原因。
该模块提供以下功能。 除非另有明确说明,否则所有返回值都是浮点数。
math.ceil(x)
返回x的上限,大于等于x 。 如果 x 不是浮点数,则委托 x.__ceil__() 返回 Integral 类的值。
math.comb(n, k)
从n 从 em> 项中选择 k 项的方法总数。
值为n! / (k! * (n – k)!) 当 k n 时,该值为零。
也称为二项式系数,因为它相当于表达式(1 x) ** n的多项式展开中第k项的系数。
如果任何参数不是整数,则会引发 TypeError。 如果任何参数为负,则引发 ValueError。
3.8 新特性。
math.copysign(x, y)
根据 x 的绝对值和 y 的符号返回一个浮点数。 在支持带符号零的平台上,copysign(1.0, -0.0) 返回 -1.0。
math.fabs(x)
> p>返回x 的绝对值。
math.factorial(x)
以整数形式返回 x 的阶乘。 如果 x 不是整数或负数,将引发 ValueError。
math.floor(x)
返回x的向下舍入,小于或等于x 。 如果 x 不是浮点数,则委托给 x.__floor__() ,它应该返回一个 Integral 值。
math.fmod(x, y)
返回由平台 C 库定义的 fmod(x, y) . 请注意,Python 表达式 x % y 可能不会返回相同的结果。 C 标准的意图是 fmod(x, y) 完全(数学上;无限精度)等于 x – n*y 对于某个整数 n 使得结果具有相同的 > 相同 小于 abs(y) 的符号和大小。 Python 的 x % y 返回带有 y 符号的结果,并且可能无法完全评估浮点参数。 比如fmod(-1e-100, 1e100)是-1e-100,但是Python的-1e-100 % 1e100的结果是1e100-1e-100,不能精确表示为浮点数,四舍五入出奇 1e100。 因此,在处理浮点数时通常首选函数 fmod(),而在处理整数时首选 Python 的 x % y。
math.frexp(x)
返回 x 的尾数和指数作为 (m, e) 对。 m 是一个浮点数,e 是一个整数,正好是 x == m * 2**e 。 如果 x 为零,则返回 (0.0, 0),否则返回 0.5 <= abs(m) < 1。 这用于以可移植的方式“分离”浮点数的内部表示。
math.fsum(iterable)
返回迭代中的精确浮点值。 通过跟踪多个中间部分和来避免精度损失:
>>>
>>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
0.9999999999999999
>>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
1.0
该算法的准确性取决于 IEEE-754 算法保证和舍入模式为半偶数的典型情况。 在某些非 Windows 版本上,底层 C 库使用扩展精度进行加法运算,有时可能会使中间和加倍,导致它在最低有效位处关闭。
有关进一步的讨论和两种替代方法,请参阅 ASPN 食谱食谱以获得准确的浮点求和。
math.gcd(a, b)
返回整数 a 和 b 的最大公约数。 如果 a 或 b 非零,则 gcd(a, b) 的值满足 a 和 b 能被 /em> 整除的最大正整数。 gcd(0, 0) 返回 0。
3.5 个新功能。
math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)
如果 a 和 如果 b 的值比较接近则返回 True,否则返回 False。
根据给定的绝对和相对公差判断两个值是否被认为接近。
rel_tol 是相对公差 – 它是 a 和 b 之间允许的最大差异,相对于较大的绝对值 a 或 b 的值。 例如,要设置 5% 的公差,请传递 rel_tol=0.05 。 默认公差为1e-09,保证两个值在9个小数位内相同。 rel_tol 必须大于零。
abs_tol 是最小绝对公差 – 对于接近于零的比较很有用。 abs_tol 必须至少为零。
如果没有错误发生,结果将是:abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol) 。
IEEE 754 特殊值 NaN 、inf 和 -inf 将按照 IEEE 规则进行处理。 具体而言,NaN 不被视为接近任何其他值,包括 NaN 。 inf 和 -inf 只被认为接近它们自己。