Skip to content

Python 数字

数字数据类型用于存储数值。Python 支持多种数字类型。它们是不可变的(immutable),这意味着改变数字值的操作实际上会创建一个新的数字对象。

数字对象通过简单地将数值赋给变量来创建:

count = 100 # 整数
pi_approx = 3.14 # 浮点数
scientific = 2.5e2 # 科学计数法表示的浮点数 (2.5 * 10^2 = 250.0)
complex_num = 1 + 2j # 复数

可以使用 del 语句删除对数字对象的引用(如果没有其他引用存在,则允许其被垃圾回收):

del count
del pi_approx, scientific # 删除多个对象
  • int (Integer): 表示正负整数,具有无限精度(任意大小)。Python 自动处理大整数。示例: 10, -25, 0, 12345678901234567890。
  • float (Floating-Point Number): 表示实数,包括带小数点或使用指数表示法(e 或 E)的数字。基于 IEEE 754 标准(通常为 64 位双精度)。示例: 3.14, -0.001, 1.0, 2.5e2 (即 250.0), 1.6e-19。
  • complex (Complex Number): 表示具有实部和虚部的数字,写为 a + bj,其中 a(实部)和 b(虚部)是浮点数,j(或 J)表示 -1 的平方根。示例: 3 + 4j, 2j, -5.1 + 0j, 1.2 - 3.4J。

注意: Python 2 中的单独 long 类型已在 Python 3 中合并到 int 中。整数现在自动处理任意精度。

intfloatcomplex
100.03.14j
10015.2045.J
-786-21.99.322e-36j
032.3e18.876j
9876543210987654321-90.-.6545+0J
-500-32.54e1003e+26J
0b101 (二进制 5)70.2E-124.53e-7j
0o17 (八进制 15)float('inf')complex(2, -3)
0xFF (十六进制 255)float('-inf')complex('1+2j')

Python 在操作过程中会自动在不同类型之间转换数字(例如,int + float 结果为 float)。您也可以使用内置函数显式转换类型:

  • int(x): 将 x 转换为整数。对于浮点数,它会向零截断。对于字符串,x 必须表示一个整数(可选指定进制: int('FF', 16))。
  • float(x): 将 x 转换为浮点数。适用于整数和兼容的字符串。
  • complex(real [,imag]): 创建一个复数。real 可以是整数、浮点数或字符串。imag(可选)必须是数字。complex('1+2j') 也适用。
print(int(3.9)) # 输出: 3
print(int("101", 2)) # 输出: 5 (二进制转整数)
print(float(5)) # 输出: 5.0
print(float("-1.5e2")) # 输出: -150.0
print(complex(3, -4)) # 输出: (3-4j)
print(complex("5-6j")) # 输出: (5-6j)

Python 的 math 模块提供了许多常用数学函数的访问权限。您需要先导入它(import math)。

函数描述
math.fabs(x)返回 x 的绝对值,作为浮点数。
abs(x)内置函数,返回绝对值(如果 x 是 int 则返回 int,如果 x 是 float 则返回 float)。
math.ceil(x)返回 x 的上限(大于或等于 x 的最小整数)。
math.floor(x)返回 x 的下限(小于或等于 x 的最大整数)。
math.exp(x)返回 e 的 x 次幂 (ex)。
math.log(x [, base])返回以给定 base 为底的 x 的对数。如果省略 base,则返回自然对数(以 e 为底)。
math.log10(x)返回以 10 为底的 x 的对数。
max(x1, x2, ...)内置函数,返回其参数中的最大值。
min(x1, x2, ...)内置函数,返回其参数中的最小值。
math.modf(x)将 x 的小数部分和整数部分作为元组 (frac, int) 返回。两部分与 x 具有相同的符号。整数部分作为浮点数返回。
pow(x, y)内置函数,返回 x 的 y 次幂(x**y)。对于整数 x,它比 math.pow 更精确。
math.pow(x, y)返回 x 的 y 次幂。总是返回浮点数。
round(x [, n])内置函数,将 x 四舍五入到 n 位小数。半数向上取整到最近的偶数(例如,round(2.5) 是 2,round(3.5) 是 4)。
math.sqrt(x)返回 x 的平方根(对于 x >= 0)。

注意: Python 2 中的 cmp(x, y) 函数已被移除。请改用比较运算符(<, >, == 等)。

random 模块提供了生成伪随机数的函数,在模拟、游戏、测试和抽样中很有用。

函数描述
random.choice(seq)从非空序列(列表、元组、字符串)中返回一个随机元素。
random.randrange(stop) 或 randrange(start, stop [, step])从 range(start, stop, step) 中返回一个随机选择的元素。
random.random()返回一个随机浮点数 r,满足 0.0 <= r < 1.0。
random.seed(a=None, version=2)初始化随机数生成器。用于获得可复现的结果。
random.shuffle(lst)原地打乱列表 lst 的元素。返回 None。
random.uniform(a, b)返回一个随机浮点数 r,对于 a <= b 满足 a <= r <= b,对于 b < a 满足 b <= r <= a。
random.randint(a, b)返回一个随机整数 n,满足 a <= n <= b。

math 模块也包含标准三角函数。角度通常期望使用弧度。

函数描述
math.acos(x)返回 x 的反余弦(弧度)。(x 必须在 -1 到 1 之间)。
math.asin(x)返回 x 的反正弦(弧度)。(x 必须在 -1 到 1 之间)。
math.atan(x)返回 x 的反正切(弧度)。
math.atan2(y, x)返回 atan(y / x)(弧度)。正确处理象限。
math.cos(x)返回 x 弧度的余弦值。
math.hypot(*coordinates)返回欧几里得范数,sqrt(x*x + y*y + ...)。
math.sin(x)返回 x 弧度的正弦值。
math.tan(x)返回 x 弧度的正切值。
math.degrees(x)将角度 x 从弧度转换为度。
math.radians(x)将角度 x 从度转换为弧度。

math 模块定义了重要的常量:

常量描述
math.pi数学常数圆周率(π ≈ 3.14159…)
math.e数学常数 e(e ≈ 2.71828…)
math.tau数学常数 tau(τ = 2π ≈ 6.28318…)
math.inf浮点正无穷大。
math.nan浮点数“非数字”(Not a Number)。