9.2. math数学函数

本模块始终是可用的。它提供对由 C 标准定义的数学函数访问。

这些函数不能用复数 ;使用相同的名称,从cmath模块的功能,如果您需要支持为复数。和不支持复数的职能之间的区别是由于大多数用户不想学很多数学,如需理解复数。接收到异常而不是复杂的结果允许意外复杂的数字作为参数使用的早期检测,以便程序员可以确定如何以及为什么它生成放在第一位。

此模块提供了以下功能。除非明确说明,否则所有返回值都是浮点型。

9.2.1. 数论和表示函数

math.ceil(x)

返回一个浮点数,大于或等于x x的的最小整数。

math.copysign(x, y)

返回xy的标志。在一个平台上支持签名的零, copysign (1.0, -0.0)返回-1.0

在 2.6 版本新。

math.fabs(x)

返回x的绝对值。

math.factorial(x)

返回x的阶乘。如果x不是整型或为负数,将引发ValueError

在 2.6 版本新增。

math.floor(x)

返回一个浮点数,最大整数值较少或等于 x楼。

math.fmod(x, y)

返回fmod (x, y),由 C 平台库定义。请注意 Python 表达式x % y可能不会返回相同的结果。C 标准的原意是, fmod (x, y)完全 (数学 ; 到无限精度) 等于x - n * y一些整数n ,结果具有相同的符号x和震级小于abs(y)Python 的x % y相反,返回的结果与符号的y和不可能确切地计算为 float 参数。例如, fmod (-1e-100, 1e100)-1e-100,但 Python 的结果-1e-100 1e1001e100-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 食谱食谱准确浮动点求和

在 2.6 版本新。

math.isinf(x)

检查是否浮x是正或负无穷大。

在 2.6 版本新。

math.isnan(x)

检查是否浮x为 NaN (不是数字)。Nan 的更多信息,请参见 IEEE 754 标准。

在 2.6 版本新。

math.ldexp(x, i)

返回x * (2 * *i)这是本质上的逆函数frexp()

math.modf(x)

返回x的小数和整数部分。这两个结果携带的x标志,也是浮点型。

math.trunc(x)

返回实际x ,截断为整数(通常长整型)。使用__trunc__方法。

在 2.6 版本新。

请注意frexp()modf()有一个不同的调用/返回模式比对应的 C: 他们接受一个单一参数和返回值,而不是返回它们通过输出参数的二次回值对 (那里是没有这种东西在 Python 中的)。

对于ceil() floor()modf()的功能,请注意所有浮点数字的足够大的规模是精确的整数。Python 花车通常携带不超过 53 位的精度 (C 平台双类型相同),在这种情况下任何浮动x abs(x) > = 2 * * 52一定有没有小数部分的位数。

9.2.2. 指数和对数函数

math.exp(x)

返回e * * x

math.expm1(x)

返回e * * x - 1对于小浮点数x,减影技术在exp(x) - 1可能会导致重大损失精度 ; expm1()功能提供一种方法来计算此数量到完全精度:

>>> from math import exp, expm1
>>> exp(1e-5) - 1  # gives result accurate to 11 places
1.0000050000069649e-05
>>> expm1(1e-5)    # result accurate to full precision
1.0000050000166668e-05

在 2.7 版本新。

math.log(x[, base])

具有一个参数,返回的x (以e) 的自然对数。

带有两个参数,返回到给定基地,作为log(x)/log(base)计算x的对数。

版本 2.3 中的更改:添加的基本参数。

math.log1p(x)

返回1 + x (底数e) 的自然对数。其结果被计算在某种程度上是准确,可用于x接近于零。

在 2.6 版本新。

math.log10(x)

返回x的对数。这是通常比更精确日志 (x, 10)

math.pow(x, y)

返回xy次幂。特殊情况下遵循附件 C99 标准的 ' F' 可能的范围内。尤其是,战俘 (1.0, x)战俘 (x, 0.0)始终返回1.0,甚至当x为零或 NaN。如果xy是有限, x是消极的和y不是一个整数,然后战俘 (x, y)是未定义的并提出了ValueError

与不同的内置*运算符, math.pow()将这两个其参数键入浮法的转换。使用*或内置pow()函数计算精确的整数的权力。

2.6 版本中的更改:结果1 * * nannan * * 0未定义。

math.sqrt(x)

返回x的平方根。

9.2.3. 三角函数

math.acos(x)

返回以弧度表示的角的x,余弦。

math.asin(x)

返回以弧度表示的正弦值的x

math.atan(x)

返回反正切值的x,以弧度为单位。

math.atan2(y, x)

返回atan (y / x),以弧度为单位。其结果是之间-pipi在从原点到平面向量(x, y)使这个角度与正向 X 轴。 Atan2 ()是两个输入端的迹象就众所周知,所以它可以计算出正确的象限角。例如, atan(1)atan2 (1, 1)是两个pi/4,但atan2 (-1, -1)-3 * pi/4

math.cos(x)

返回x弧度的余弦值。

math.hypot(x, y)

返回对欧氏范数, sqrt (x * x + y * y)这是从原点到向量的长度(x, y)

math.sin(x)

返回x弧度的正弦值。

math.tan(x)

返回x弧度的正切值。

9.2.4. 角度-弧度转换

math.degrees(x)

将角度x从弧度转换为度。

math.radians(x)

将角度x从度转换为弧度。

9.2.5. 双曲函数

math.acosh(x)

返回x的反双曲余弦值。

在 2.6 版本新。

math.asinh(x)

返回x的反双曲正弦值。

在 2.6 版本新。

math.atanh(x)

返回x的反双曲正切值。

在 2.6 版本新增。

math.cosh(x)

返回x的双曲余弦值。

math.sinh(x)

返回x的双曲正弦值。

math.tanh(x)

返回x的双曲正切值。

9.2.6. 特殊函数

math.erf(x)

返回x的误差函数。

在 2.7 版本新。

math.erfc(x)

返回在x的余误差函数。

在 2.7 版本新。

math.gamma(x)

返回伽玛函数在x

在 2.7 版本新。

math.lgamma(x)

返回伽玛函数在x的绝对值的自然对数。

在 2.7 版本新。

9.2.7. 数学常数

math.pi

数学常量 π = 3.141592......,到现有的精度。

math.e

数学常数 e = 2.718281......,到现有的精度。

CPython 的实现细节:数学模块主要由 C 平台数学库的函数轻微封装而成。在特殊情况下的行为遵循附件 F 的 C99 标准在适当情况下。当前的实现将为无效的操作,如sqrt(-1.0)log(0.0) (在 C99 附件 F 建议信号操作无效或被零除),提高ValueErrorOverflowError的结果那溢出 (例如, exp(1000.0))。南除非一个或多个输入参数是 NaN ; 不会从任何上述函数返回在这种情况下,大多数函数将返回 NaN,但 (再一次在 C99 附件 F) 有一些例外到这个规则,例如pow(float('nan'), 0.0)hypot(float('nan'), float('inf'))

请注意 Python 还可以不遗余力的区分从安静的 Nan,信号 Nan 信号 Nan 的行为仍未指定。典型行为是对待所有 Nan,好像他们是安静。

2.6 版本中的更改:行为在特殊情况下现在旨在遵守 C99 附件 f。在早期版本的 Python 松散指定了在特殊情况下的行为。

请参见

Module cmath
Complex number versions of many of these functions.